通过__dict__给对象添加属性
class Student(object): stu_school = 'hnie' stu1_obj.stu_name = 'featherwit' # stu1_obj.__dict__['stu_name'] = 'featherwit' stu1_obj.stu_age = 18 # stu1_obj.__dict__['stu_age'] = 18 stu1_obj.stu_gender = 'male' # stu1_obj.__dict__['stu_gender'] = 'male' print(stu1_obj.__dict__)
这样给对象进行动态的赋值还是过于复杂, 并且从类的定义中知道类是一类具有相同属性和方法的集合, 如果这样动态的进行添加属性的话, 不符合类的定义, 需要将对象的相同属性定义在类中, 可以使用类的__init__方法
通过__init__给对象初始化属性
class Student(object): def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender
这时候, 通过类实例化对象的操作为:
stu1_obj = Student('featherwit', 18, 'male') # Student.__init__(空对象, 'featherwit', 18, 'male')
实例化的过程总共发生了三件事:
1. 先产生了一个空对象
2. 会自动调用类中的__init__方法, 然后将空对象以及调用类时括号内传入的参数一同传给__init__方法
3. 返回初始化后的对象
class Student(object): # 空对象, featherwit, 18, male def __init__(self, name, age, gender): self.name = name # 空对象.name = featherwit self.age = age # 空对象.age = 18 self.gender = gender # 空对象.gender = male stu1_obj = Student('featherwit', 18, 'male') # Student.__init__(空对象, 'featherwit', 18, 'male')
并且, 注意到__init__方法是没有返回值的, 没有返回值即返回的为None, 如果__init__返回的是其他的非空对象, 则会报错。
总结
1. __init__方法会在调用类时自动触发执行, 用来为对象初始化自己独有的数据
2. __init__内应该存放的是为了对象初始化属性的功能, 但是也是可以存放任意其他代码的, 想要在类调用时就立即执行的代码都可以放在__init__方法内
3. __init__方法必须返回None