Python新手问题:类内部实例化另一个类的实例共享问题
问题解决方法
你遇到的核心问题是:Class_two里的new_object是类属性,类属性属于类本身,所有Class_two的实例都会共享这个属性,所以不管创建多少个Class_two实例,用的都是同一个Class_one对象,修改其中一个的name会覆盖所有实例的对应值。
要实现每个Class_two实例拥有独立的Class_one对象,只需把new_object改成实例属性,在Class_two的__init__方法里初始化即可:
class Class_one: name = "First" class Class_two: def __init__(self): # 每个Class_two实例创建时,都会生成新的Class_one实例 self.new_object = Class_one() instance_one = Class_two() instance_one.new_object.name = "Second" instance_two = Class_two() instance_two.new_object.name = "Third" print(instance_one.new_object.name) # 输出 Second print(instance_two.new_object.name) # 输出 Third
__init__是Python类的构造方法,每次创建类的实例时都会自动执行这个方法。把self.new_object = Class_one()放在这里,就能保证每个Class_two实例都有属于自己的Class_one对象,修改其中一个的属性不会影响其他实例。
内容的提问来源于stack exchange,提问作者MRoot
相关产品推荐
相关产品推荐

