python3中__init__()和__new__()和__call__()的原理和使用

95 阅读1分钟
class Person:
    """
    定义类型的时候实现__call__()函数,这个类就成为可调用的
    """
    #__init__()方法除了self外的参数都和__new__()方法中除了cls参数外的参数保持一致
    def __init__(self,*args,**kwargs) -> None:
        """
        实例对象初始化
        """
        super(Person,self).__init__()
    
    def __new__(cls,*args,**kwargs):
        """
        __new__()方法最先被调用返回一个实例对象
        """
        return super(Person, cls).__new__(cls)

    def __call__(self, *args, **kwargs):
        """
        可以使类的实例像函数一样被调用
        """
        print(args,kwargs)



p = Person()
p(100,name_="peter")