Python构造器

微信公众号-IT赶路人,专注分享与IT相关知识,关注我,一起升职加薪!

图片

本文将向您介绍一个有趣的主题,这个主题很简单,但编程的核心,我指的是Python构造函数。下面的指针将在本文中介绍,那么让我们开始吧,

Python构造函数

如果您已经进行了一段时间的编程,那么您可能遇到Python这个名称的次数太多了。Python作为一种编程语言遵循面向对象,这意味着在Platform上创建的每个实例都被定义为对象。尽管Python中的大多数组件都有大量的在线信息,但有一个话题一直在反复研究,那就是Python中的构造函数。因此,在这篇文章中,我们将讨论所有关于Python中的构造函数,如何利用它们,以及它们给我们带来的好处。让我们开始吧!继续这篇关于Python构造器的文章,

Python中的构造函数是什么?

构造函数可以简单地定义为一种特殊类型的方法或函数,可用于初始化类中各种成员的实例。
在Python中,有两种不同类型的构造函数。

  • 非参数化构造函数:Python中没有参数的构造函数称为非参数化构造函数。

  • 参数化构造函数:预定义了参数的构造函数称为参数化构造函数。
    构造函数是在我们在类内创建对象时定义的。构造函数的存在还验证了是否存在足够的资源,因此可以通过类的对象轻松地执行启动任务。

在Python中创建构造函数

既然您已经熟悉了Python中构造函数的定义和类型,让我们来研究一下如何在Python中创建构造函数。
在Python中,如果需要创建构造,则需要使用init函数。您需要调用此方法,Momenta类已实例化。一旦定义并调用了init函数,我们就可以根据需要在创建类对象时传递任意数量的参数。在Python中,构造函数最常见的用法是初始化类的属性。
注意:您在Python中创建的每个类都需要有一个构造函数才能运行,即使它是默认的构造函数也是如此。
要更好地理解这个概念,请看下面的示例。

class Employee:
    def __init__(self,name,id):
        self.id = id;
        self.name = name;
    def display (self):
        print("ID: %d nName: %s"%(self.id,self.name))
        
emp1 = Employee("John",101)
emp2 = Employee("David",102)
#accessing display() method to print employee 1 information
emp1.display();
#accessing display() method to print employee 2 information
emp2.display();

当您运行上面的程序时,输出将如下所示。

ID: 101 nName: John
ID: 102 nName: David

参数化构造函数与非参数化构造函数的区别

如上所述,参数化构造函数是具有预定值的构造函数,而非参数化构造函数是没有赋值的构造函数。虽然编程用例会根据上下文的不同而有所不同,为了更好地理解这一点,请看下面的示例。

class Student:
#Constructor - non parameterized
    def __init__(self):
        print("This is non parametrized constructor")
    def show(self,name):
        print("Hello",name)
        
student = Student()
student.show("John")

上面是一个非参数化构造函数的示例,它的输出如下所示。

This is non parametrized constructor
Hello John
class Student:
#Constructor - parameterized
    def __init__(self, name):
    print("This is parametrized constructor")
    self.name = name
    
    def show(self):
        print("Hello",self.name)
        
student = Student("John")
student.show()

输出结果

This is parametrized constructor
Hello John

Python内置的类函数

既然已经清楚了Python中构造函数的基础知识,那么让我们探索一下Python中存在的各种内置类。
1.getattr(obj,name,default):Python中的这个内置函数用于访问类的属性。
2.delattr(obj,name):如果您需要删除类中的特定属性,则使用此内置函数。
3.setattr(obj,name,value):在特定情况下,如果您决定为特定属性设置特定值,那么可以使用Python内置的这个函数。
4.hasattr(obj,name):最后但同样重要的是,如果您需要查看特定对象是否包含属性,则使用此函数。执行时,如果函数中存在属性,则返回TRUE。
要理解Python中内置类函数的概念,请看下面的代码。

class Student:
    def __init__(self,name,id,age):
        self.name = name;
        self.id = id;
        self.age = age
#creates the object of the class Student

s = Student("John",101,22)
#prints the attribute name of the object s
print(getattr(s,'name'))
# reset the value of attribute age to 23
setattr(s,"age",23)
# prints the modified value of age
print(getattr(s,'age'))
# prints true if the student contains the attribute with name id
print(hasattr(s,'id'))
# deletes the attribute age
delattr(s,'age')
# this will give an error since the attribute age has been deleted
print(s.age)

输出结果

John
23
True
Traceback (most recent call last):
  File "E:/Program Files/program/jiaoben/output.py", line 20, in <module>
    print(s.age)
AttributeError: 'Student' object has no attribute 'age'

内置类属性

除了内置的类函数外,Python还附带了内置的类属性,这些属性有时会派上用场。下面给出了一些最重要的内置类属性。
1.dict:通过使用它,您可以查看包含有关类命名空间的信息的字典。
2.name:如果需要查看当前类的名称,可以使用该属性。
3.doc:该属性包含一个字符串,该字符串包含当前类的文档。
4.MODULE:如果需要访问定义类的模块,可以使用这个内置属性。
5.BASES:如果需要查看包含所有基类的元组,则使用此函数。
下面给出了一个说明所有内置类属性的示例。

class Student:
    def __init__(self,name,id,age):
        self.name = name;
        self.id = id;
        self.age = age
def display_details(self):
print("Name:%s, ID:%d, age:%d"%(self.name,self.id))
s = Student("John",101,22)
print(s.__doc__)
print(s.__dict__)
print(s.__module__)

输出结果

None
{'age': 22, 'id': 101, 'name': 'John'}
__main__

这就把我们带到了这篇关于Python构造器的文章的末尾。

26322751-8bd00fde1a719aa1.jpg
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • 定义:类是一种数据结构,可用于创建实例,一般情况下,类封装了数据和用于该数据的方法注意点:方法中self参数类属性...
    要努力的车车阅读 225评论 0 0
  • 1.类的构造函数,用于初始化类成员等,只能用init ,不能换其他名字 2.init方法的意义:init方法在类的...
    知本集阅读 2,443评论 0 1
  •   Python由于最早期受C/C++语言的影响,有很多C/C++的语言设计思想,比如多重继承。其中与对象内存初始...
    杨强AT南京阅读 381评论 0 2
  • 构造器(Initializer) 其实我个人并不喜欢把init和deinit叫做构造器和析构器(真正应该对应con...
    MD5Ryan阅读 3,661评论 4 12
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,517评论 2 7