# 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的基础上加