在学习python过程中,学习到类,通过自己编写代码测试,总结一下类在计算机的储存和管理,有利于深入的了解类和实例
- 类一旦定义,就会开辟一块内存空间吗?这个没有测试出来,看到的人可以回复一下
- 通过代码测试发现:
a.类名的id和每个实例的id均不一样,每个实例id也不一样 b.类的实例化属性(不是通过构造 函数初始化的)其id地址一致 c.类的实例化属性是通过构造函数初始化的其id地址不一致 d.类的实例化方法同一个方法的id是一致的。
class People():
sex='女'
def __init__(self,age:int) -> None:
self.age=age
def eat(self):
pass
def drink(self):
pass
def __str__(self) -> str:
pass
p1=People(25)
p2=People(24)
p3=People(23)
print(f'People的id是{id(People)}')
print(f'p1的id是{id(p1)}')
print(f'p2的id是{id(p2)}')
print(f'p3的id是{id(p3)}')
print('~'*20)
print(f'People.sex的id是{id(People.sex)}')
print(f'p1.sex的id是{id(p1.sex)}')
print(f'p2.sex的id是{id(p2.sex)}')
print(f'p3.sex的id是{id(p3.sex)}')
print('~'*20)
print(f'p1.age的id是{id(p1.age)}')
print(f'p2.age的id是{id(p2.age)}')
print(f'p3.age的id是{id(p3.age)}')
print('~'*20)
print(f'p1.eat的id是{id(p1.eat())}')
print(f'p2.eat的id是{id(p2.eat())}')
print(f'p3.eat的id是{id(p3.eat())}')
print('~'*20)
print(f'p1.drink的id是{id(p1.drink())}')
print(f'p2.drink的id是{id(p2.drink())}')
print(f'p3.drink的id是{id(p3.drink())}')
print('-'*50)
运行结果 People的id是1735648423408 p1的id是1735654287776 p2的id是1735654287680 p3的id是1735654287536
People.sex的id是2898864037520 p1.sex的id是2898864037520 p2.sex的id是2898864037520 p3.sex的id是2898864037520
p1.age的id是2898858503216
p2.age的id是2898858503184
p3.age的id是2898858503152
p1.eat的id是140714246421720 p2.eat的id是140714246421720 p3.eat的id是140714246421720
p1.drink的id是140714246421720
p2.drink的id是140714246421720
p3.drink的id是140714246421720
--------------------------------------------------
|