程序猿_郭文超
2023-06-09 11:37
# Enter a code class Animal(object): instance_count = 0 def __init__(self,name,age): self.name = name self.age = age dog = Animal('doggi',2) dog.instance_count = dog.instance_count+1 cat = Animal('tom',1) cat.instance_count = cat.instance_count+1 print(dog.name,dog.age,dog.instance_count) print(cat.name,cat.age,cat.instance_count)
从课程中讲到的,对象中定义的变量属性是会对 实例化对象进行共享的,并且实例化对象也是可以修改的,对于另一个实例化对象可见的,那么在我这段代码中,
dog.instance_count = dog.instance_count+1
在执行完这段代码后,其类中的instance_count的值应该变成1了,那么在执行下面代码
cat.instance_count = cat.instance_count+1
类二中的instance_count的值应该变成2,但是输出的时候,全都是1,我现在不是很能理解。求解答
class Animal(object):
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
Animal.count += 1
dog = Animal('wang', 3)
cat = Animal('miao', 2)
print(Animal.count)
dog.instance_count
=
dog.instance_count
+
1 实际上不是在操作类属性 而是在dog实例上新增了一个 instance_count属性,然后你再次访问的时候因为优先级 你访问不到类上的属性了 所以操作类属性最好使用Animal.instance_count
instance_count是静态属性,每次实例化都会重新调用instance_count=0这句,所以你的dog,cat调用instance_count时都被初始化为0了,所以即使+1也只是在0的基础上加
Python3 进阶教程(新版)
41910 学习 · 236 问题
相似问题
回答 1
回答 2
回答 1
回答 3
回答 1