我定义了一个这样的类:
class foo1():
def a():
pass
def b():
pass
def c():
pass
我创建了两个类foo1的实例:
f1 = foo1()
f2 = foo1()
现在尝试打印方法的一些信息:
print("f1.a@" , f1.a)
print("f1.b@" , f1.b)
print("f1.c@" , f1.c)
print('xxxxxxxxxxxxxxxxxxxx')
print("f2.a@" , f2.a)
print("f2.b@" , f2.b)
print("f2.c@" , f2.c)
发生了什么?
f1.a@ <bound method foo1.a of <__main__.foo1 object at 0x10217d128>>
f1.b@ <bound method foo1.b of <__main__.foo1 object at 0x10217d128>>
f1.c@ <bound method foo1.c of <__main__.foo1 object at 0x10217d128>>
xxxxxxxxxxxxxxxxxxxx
f2.a@ <bound method foo1.a of <__main__.foo1 object at 0x10217d160>>
f2.b@ <bound method foo1.b of <__main__.foo1 object at 0x10217d160>>
f2.c@ <bound method foo1.c of <__main__.foo1 object at 0x10217d160>>
那么为什么对于类foo1的实例,它的所有方法都在同一个地址?