__new__构造方法:
1.触发机制:实例化对象的时候才触发
2.作用:管理控制对象的生成过程
3.参数:用一个cls来接收当前类,其他的参数根据实例化的参数决定
4.返回值:return 可有可无 没有返回值,实例化的结果为None
5.注意事项:__new__魔术方法和__init__的魔术方法的参数一致(除了第一个)
# __new__ 管理对象的控制生成过程
class Human:
eye = 2
skin = 'yello'
def eat(self):
print('吃饭')
def drink(self):
print('water')
def __new__(cls, sex):
if sex == 'girl':
return object.__new__(cls)
else:
pass
print('__new__被触发')
pass
xs = Human('boy')
print(xs)
此时输出为:
如果改成:
xs = Human('girl')
print(xs)
那么运行结果则变为:
这表明对象生成了,且由__new__来控制的。