魔法方法的“魔力”体现在它们总能够在适当的时候被自动调用,魔法方法总是被双下划线包围,例如__init__
1.init(self[ , …])
- 是构造方法,会在类实例化时被自动调用,不返回除了 None以外的任何对象,一般我们在需要对一个对象进行初始化操作的时候,我们才会重写__init__方法。
2.new(cls[, …])
- 第一个被调用的应该是__new__(cls[,
…])方法,它跟其他的魔法方法不同,第一个参数不是self,而是class,它在init之前被调用,它后边有参数的话,会原封不动的传给__init__方法, - new 方法主要任务时返回一个实例对象,通常是参数 cls 这个类的实例化对象,当然你也可以返回其他对象
>>> class CapStr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
>>> a = CapStr("I love fichc")
>>> a
'I LOVE FICHC'