class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
obj = MyClass("Alice", 25)
print(f"Name: {obj.name}, Age: {obj.age}")
__init__
方法中进行属性初始化的作用
- 对象状态初始化:确保每个新创建的对象都具有初始的、合理的状态。例如,上述代码中每个
MyClass
对象创建时,都有自己的name
和age
属性值,这样对象从创建之初就有可用的数据。
- 一致性:使得所有对象在创建时遵循相同的初始化规则,避免在使用对象时出现属性未定义等错误。
注意事项
- 参数命名:
__init__
方法中参数命名应清晰明了,能准确反映要初始化的属性,避免使用容易混淆的名称。
- 参数验证:对于传入
__init__
方法的参数,应该进行必要的验证。比如,对于age
属性,如果要求是正整数,应该验证传入的age
值是否为正整数,否则可以抛出合适的异常,以保证对象状态的合理性。
- 继承中的
__init__
:在继承体系中,如果子类重写了__init__
方法,需要注意调用父类的__init__
方法,以确保父类部分的属性也能正确初始化。例如:
class Parent:
def __init__(self, value):
self.value = value
class Child(Parent):
def __init__(self, value, extra):
super().__init__(value)
self.extra = extra