跳至正文
View Categories

< 1 min read

主要内容 #

  • 类的构造方法
  • 多参数构造方法构建
  • 1. 类的构造方法 #

    在用类创建一个实例对象时,我们希望可以在创建的同时给对象的某些属性赋一个初值。
    这就需要在类中添加一个__init__()方法。
    该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。
    构造方法用于创建对象时被自动调用。
    即每当创建一个类的实例对象时,Python解释器都会自动调用它。

    构造方法的语法格式如下:

    # 注意,此方法的方法名中,开头和结尾各有 2 个下划线,
    # 且中间不能有空格代码块
    # 第一个参数必须为一个名为 self 的参数
    # self后面的...表示多个参数或者没有参数
    def __init__(self, ...):

    构造方法的示例如下:

    class Person: #定义一个Person类
        '''
        这是一个Person类的定义
        '''
    	def __init__(self): # __init__函数
    	    print("自动调用了构造方法")
    	
    	age = 0
    	name = '某某某'
    	weight = 18
    
    Someone_1 = Person() # 构建对象的同时直接调用了__init__函数


    注意:
    1,即便不添加__init__函数,Python 也会自动为类添加一个仅包含 self 参数的构造方法。
    2,仅包含 self 参数的 __init__() 构造方法,又称为类的默认构造方法。

    2. 多参数构造方法构建 #

    在 __init__() 构造方法中,除了 self 参数外,还可以自定义其它参数。
    参数之间使用逗号“,”进行分割。
    例如,下面的代码在创建 __init__() 方法时,额外指定了 1 个参数

    class Person: #定义一个Person类
        '''
        这是一个Person类的定义
        '''
    	def __init__(self, name): # __init__函数
    	    self.name = name
    	
    	age = 0
    	weight = 18
    
    Someone_1 = Person(name='小强') # 构建对象的同时,给对象的属性name赋值
    print(Someone_1.name)
    
    #Someone_2 = Person() # 程序报错,因为定义的构造函数需要传入一个参数name


    注意:
    虽然构造方法中有 self、name这2个参数,但实际需要传参的仅有 name。
    也就是说,self 不需要手动传递参数。

    下面的代码在创建 __init__() 方法时,额外指定了 3 个参数

    class Person: #定义一个Person类
        '''
        这是一个Person类的定义
        '''
        def __init__(self, name, age, weight): # __init__函数
            self.name = name
            self.age = age
            self.weight = weight
    
    Someone_1 = Person(name='小强', age=1, weight=18) # 构建对象的同时,给对象的属性name赋值
    print(Someone_1.name, Someone_1.age, Someone_1.weight)

    4. 小结 #

    • 构造方法是类的一个特殊方法,在实例化时自动调用
    • 构造方法名称是__init__,参数至少有一个self

    习题 #

    • 实现Person这个类,包含属性:name,height,age,sex,location,使用__init__构造