gpt4 book ai didi

python - 为什么 `is` 对相同的实例方法和类方法返回 False,但对静态方法返回 True

转载 作者:行者123 更新时间:2023-12-03 17:25:17 27 4
gpt4 key购买 nike

让代码来说明问题:

>>> class A(object):
... a = None
... def b(self):
... pass
...
>>> a = A()
>>> a.a is a.a
True
>>> a.b is a.b
False

>>> class B(object):
... a = None
... @staticmethod
... def b():
... pass
...
>>> b = B()
>>> b.a is b.a
True
>>> b.b is b.b
True

>>> class C(object):
... a = None
... @classmethod
... def b(cls):
... pass
...
>>> c = C()
>>> c.a is c.a
True
>>> c.b is c.b
False

最佳答案

这会将方法绑定(bind)到类的对象。

a.b is a.b
<bound method A.b of <__main__.A object at 0x00000294E2DA1780>>

这将直接解决方法,因为我们可以直接使用类名调用静态方法,而无需创建对象来调用静态方法。
b.b is b.b
<function B.b at 0x00000294E2C49D08>

这会将方法直接绑定(bind)到一个类。您可以直接使用类名调用该方法,而无需创建对象或使用对象。
c.b is c.b
<bound method C.b of <class '__main__.C'>>

关于python - 为什么 `is` 对相同的实例方法和类方法返回 False,但对静态方法返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61925845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com