1.获取new, init魔法方法 - 先使用__new__方法创建完成对象后, 再执行__init__方法
class A:
def __new__(cls, x):
print('__new__')
return super().__new__(cls)
def __init__(self, x):
self.x = x
print('__init__')
o = A(1)
2.del魔法方法 - 在实例被释放的时候触发, 不可控 - 与python里的 del o是无关的
class A:
def __del__(self):
print('del')
o = A()
x = o
del o # 不会触发__del__
3.format魔法方法
class A:
def __format__(self, spec): # spec就是进制数x
if spec == 'x':
return '0xA'
return '<A>'
print(f'答案:{15}') # 十进制
print(f'答案:{15}:b') # 二进制
print(f'答案:{15}:x') # 十六进制