huyanmin 发表于 2022-10-10 14:03:29

类 的方法与他的实例方法的比较


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方法,可以这样理解吗
'''

小伤口 发表于 2022-10-10 15:44:00

每次实例化对象都会在内存开辟一个新空间存储这个对象
例如:
foo = MyClass()
foo2 = MyClass()
foo3 = MyClass()
那么内存中就会开辟新的3个空间存储这三个对象
所以实例化对象之间是独立的并不会存在共用一个实例方法
foo
foo2
foo3
这三个变量存储的其实就是指向这三个对象的内存地址
所以foo.A()就可以调用这个方法

页: [1]
查看完整版本: 类 的方法与他的实例方法的比较