类 的方法与他的实例方法的比较
class MyClass:
def __init__(self):
self.name='tom'
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)
print("----------------"*2)
foo = MyClass()
foo2 = MyClass()
foo3 = MyClass()
'''
结果为:
2097420966640 <class 'function'>
--------------------------------
2097420966640 <class 'function'>
--------------------------------
--------------------------------
2097420258176 <class 'method'>
2097420258176 <class 'method'>
2097420258176 <class 'method'>
总结为:类中的A函数与类的实例的A方法不是一个,但是三个实例对共用了一个实例方法A方法,
从而推广为所有MyClass 的实例对象都共同调用一个A方法,可以这样理解吗
''' 每次实例化对象都会在内存开辟一个新空间存储这个对象
例如:
foo = MyClass()
foo2 = MyClass()
foo3 = MyClass()
那么内存中就会开辟新的3个空间存储这三个对象
所以实例化对象之间是独立的并不会存在共用一个实例方法
foo
foo2
foo3
这三个变量存储的其实就是指向这三个对象的内存地址
所以foo.A()就可以调用这个方法
页:
[1]