Python魔术方法
__init__
类似于构造器
#__init__ magic
class Human:
def __init__(self, name):
#print('init exec')
self.sex = 'man'
self.age = 1
self.name = name
def eat(self):
print('eating')
def run(self):
print('running')
def sleep(self):
print('sleeping')
#initilize
one = Human('Tom')
print(one.__dict__)#__dict__打印属性名及属性值构成的字典
########################################
{
'sex': 'man', 'age': 1, 'name': 'Tom'}
self代表对象本身,跟c++的this指针一样自动传入的,后面的参数在实例化之后传入。
one = Human()这一句实际上可以看作执行了两个魔术方法,第一个是new,然后是init,先创建对象,再初始化它。
总结:
- 触发时机:实例化对象之后触发
- 作用:为对象添加对象的所属成员
- 参数:一个self接受当前对象,其他的参数根据实例化的传参决定
- 返回值:无
- 注意事项:无
__new__
创建对象时触发:
#new magic
class Human:
def __new__(cls, sex):
#print(sex)
if sex == 'male':
return object.__new__(cls)#cls换成Human也行
else:
pass
def eat(self):

本文详细介绍了Python中的几个重要魔术方法,如__init__、__new__、__del__、__call__、__len__、__str__和__repr__。这些方法在对象创建、管理、操作和表示等方面起着关键作用。例如,__init__用于初始化对象,__new__控制对象的创建,__del__在对象回收时执行,__call__使对象可调用,__len__提供对象长度信息,__str__和__repr__定义对象打印和表示方式。通过理解并巧妙运用这些魔术方法,可以更好地设计和实现Python类的行为。
最低0.47元/天 解锁文章
567

被折叠的 条评论
为什么被折叠?



