Python笔记之构造函数__init__

构造函数

__init__初学者看着很吓人,其实它就是一个初始化方法,只是命名为__init__。然而,构造函数不同于普通方法的地方就在于,将在对象创建后自动调用它们。

在Python中,创建构造函数很简单,只需要将方法init的名称从普通的init改成魔法版的__init__即可。如示例1

#示例1
>>> class My:
...     def __init__(self):
...             self.number = 45
...
>>> F = My()
>>> F.number
45

构造函数中也可以添加参数,由于参数是可选的,所有你也可以指定这个参数具体如示例2

#示例2
>>> class My:
...     def __init__(self, value=45):
...             self.number = value
...
>>> F = My()
>>> F.number
45
>>> F = My(" this")
>>> F.number
' this'

编写构造函数

现在,我们来创建一个实例来尝试编写一个构造函数。编写一个Person类。具体见示例3

>>> class Person:
...     def __init__(self, name, job=None, pay=0):
...         self.name = name
...         self.job = job
...         self.pay = pay
...
>>> bob = Person('Bob Smith')
>>> sue = Person('Sue Jones', job='dev', pay=10000)
>>> print(bob.name, bob.job, bob.pay)
Bob Smith None 0
>>> print(sue.name, sue.job, sue.pay)
Sue Jones dev 10000

#这里的bob对象针对job和pay接受了默认值,但是sue显式地提供了值。
#注意在创建sue时是如何使用关键字参数的

赋给实例属性第一个值的通常方法是,在__init__构造函数方法中将它们赋给self,构造函数方法包含每次创建一个实例的时候Python会自动运行代码。在OO术语中,self就是新创建的实例对象,而name, job, pay变成了状态信息,即保存在对象中供随后使用的描述性数据。

关于构造函数的疑惑解答

  1. 为什么类方法函数中的第一个参数特殊?        类方法中函中的第一个参数之所以特殊,是因为它总是接受将方法调用视为隐含主体的实例对象,按照惯例,通常称为self。因为方法函数默认总是有这个隐含的主体对象环境,所以我们说这是”面向对象“,也就是设计用来处理或修改对象的。
  2. __init__方法是做什么用的?        如果类中编写了或者继承了__init__方法,每次类实例创建时,Python会自动调用它。这也称为构造函数。除了明确传入类的名称的任何参数外,还会隐性的传入新实例。这也是最常见的运算符重载方法。如果没有__init__方法,实例刚创建时就是一个简单的空的命名空间。
     
  3. 怎么创建实例?       你可以调用类名称来创建类实例。任何传给类名称的参数都要出现在__init__构造函数中第二和其后的参数。新的实例会记得创建它的类,从而可以实现继承目的。

 

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值