Python中的new和call方法

本文讲解了Python中__new__方法的创建新对象过程以及__call__方法实现类似函数调用的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

__new__ 方法

__new__ 方法是一个静态方法,用于创建并返回一个新的对象实例。它通常在创建新实例时调用,并且总是在 __init__ 方法之前调用。_

_new__ 方法接收的第一个参数是类本身(Class),而不是实例对象,随后的参数与 __init__ 方法接收的参数类似。

示例:

class Student(object):
    def __init__(self,name,age) -> None:
        self.name=name
        self.age=age
        print("----init start----")
        # self是对象本身
        print(self)
        print("----init end----")

    #执行初始化前的操作
    def __new__(cls,*args, **kwargs) :
        print("-------_new start_----")
        # cls是Student这个类
        print(cls)
        print(args)
        print(kwargs)
        print("-------_new end_----")

        #负责执行init方法,调用Object的new,再调用init方法
        return object.__new__(cls)
    
p=Student("Recardo",17)
p2=Student(name="Nuonuo",age=18)

结果

-------_new start_----
<class '__main__.Student'>
('Recardo', 17)
{}
-------_new end_----
----init start----
<__main__.Student object at 0x000001C67F902C10>
----init end----
-------_new start_----
<class '__main__.Student'>
()
{'name': 'Nuonuo', 'age': 18}
-------_new end_----
----init start----
<__main__.Student object at 0x000001C67F902C90>
----init end----

__call__ 方法

__call__ 方法允许类的实例像函数一样被调用。当实例后面跟着括号和参数时,Python 会自动调用该实例的 __call__ 方法。

示例

class CallableClass:  
    def __call__(self, *args, **kwargs):  
        print("Instance of CallableClass is being called")  
        print(f"Arguments: {args}, Keyword arguments: {kwargs}")  
  
# 创建CallableClass的实例  
callable_instance = CallableClass()  
  
# 调用实例,就像调用函数一样  
callable_instance(1, 2, 3, a=4, b=5)

结果:

Instance of CallableClass is being called
Arguments: (1, 2, 3), Keyword arguments: {'a': 4, 'b': 5}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值