python 关于类的实例方法的问题
#通过程序运行,打印后第1处A()函数的id值和第2处A()函数的id值为什么不一样,一个函数地址应该一样啊?class MyClass:
def __init__(self):
self.A()
def A(self):
print(id(self.A))#第1处
def B(self):
print('我是B')
a= MyClass.__dict__['A']
print(id(a))#第2处
foo = MyClass()
试着运行下这个代码:
class MyClass:
def __init__(self):
self.A()
def A(self):
print(id(self.A), type(self.A))
def B(self):
print('我是B')
print(id(MyClass.A), type(MyClass.A))
print("----------------"*2)
a = MyClass.__dict__['A']
print(id(a), type(a))
print("----------------"*2)
foo = MyClass()
运行结果:
1334136322368 <class 'function'>
--------------------------------
1334136322368 <class 'function'>
--------------------------------
1334129893248 <class 'method'>
从上可以看出,类中定义的实例方法 A ,属于 function,而实例化后的 A 实例方法,变成了 method 方法
所以两者上是有区别的,我个人认为,类中的 A 方法,属于一种 “模板”,后续实例化的对象,都指向实例化后的新建的实例化方法 A ,所以导致地址不同
self被偏函数了
页:
[1]