python中的__new__方法

python中的__new__方法

python中__new__方法是对象的构造方法:

  • 在元类中,__new__方法控制类(元类的实例,本质是对象)的创建;
  • 在普通类中,__new__方法控制类对象的创建;

试验代码

class MetaClass(type):
    def __new__(cls, name, bases, *attrs):
        print('在元类中,__new__方法控制类(元类的实例,本质是对象)的创建')
        return super().__new__(cls, name, bases, *attrs)


class Book(metaclass=MetaClass):
    def __new__(cls, *args, **kwargs):
        print('在普通类中,__new__方法控制类对象的创建')
        # return super(Book, cls).__new__(cls, *args, **kwargs) # python2
        return super().__new__(cls)  # python3

    def __init__(self, name):
        self.name = name

    def __str__(self):
        return '《{}》'.format(self.name)


if __name__ == '__main__':
    book = Book('python')
    print(book)

代码输出

在元类中,__new__方法控制类(元类的实例,本质是对象)的创建
在普通类中,__new__方法控制类对象的创建
《python》

版权声明:本文为u014294083原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。