更新时间:2021-07-02 来源:黑马程序员 浏览量:
每个类都有一个默认的__init__()方法,如果在定义类时显式地定义了__init__()方法,则创建对象时Python解释器会调用显式定义的__init__()方法;如果定义类时没有显式定义__init__()方法,那么Python解释器会调用默认的__init__()方法。
__init__()方法按照参数的有无(self除外)可分为有参构造方法和无参构造方法,无参构造方法中可以为属性设置初始值,此时使用该方法创建的所有对象都具有相同的初始值。若希望每次创建的对象都有不同的初始值,则可以使用有参构造方法实现。
例如,定义一个类Information,在该类中显式地定义一个带有3个参数的__init__()方法和info()方法,示例代码如下:
class Inforamtion(object): def __init__(self, name, sex): # 有参构造方法 self.name = name # 添加属性name self.sex = sex # 添加属性sex def info(self): print(f'姓名:{self.name}') print(f'性别:{self.sex}')上述代码中首先定义了一个包含三个参数的Information类,然后通过参数name与sex为属性name和sex进行赋值,最后在info()方法中访问属性name和sex的值。
因为定义的构造方法中需要接收两个实际参数,所以在实例化Information类对象时需要传入两个参数,示例代码如下:
infomation = Inforamtion('李婉', '女') infomation.info()
运行代码,结果如下所示:
姓名:李婉 性别:女
注意:
前面在类中定义的属性是类属性,可以通过对象或类进行访问;在构造方法中定义的属性是实例属性,只能通过对象进行访问。