[ Python魔法方法[1] ]


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')  # 十六进制