[英]Instance methods in Python
在C ++中,特定类的所有对象都有自己的数据成员,但共享成员函数,内存中只有一个副本存在。 是否与Python的情况相同或者每个类的实例都存在不同的方法副本?
是 - 内存中只存在该方法的一个副本:
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... def test():
... return 1
...
>>> a = A()
>>> b = A()
>>> id(a.test)
140213081597896
>>> id(b.test)
140213081597896
让我们一起找一个答案,一个简单的测试:
class C:
def method(self):
print('I am method')
c1 = C()
c2 = C()
print(id(c1.method)) # id returns the address
>>> 140161083662600
print(id(c2.method))
>>> 140161083662600
这里id(obj):
返回对象的标识。
这保证在同时存在的对象中是唯一的。 (CPython使用对象的内存地址。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.