我写了大量的代码,它们都非常依赖于继承和组合。现在我遇到了一个问题,我的层次结构类需要共享变量才能在彼此之间工作,但这导致合成类也被共享,这意味着这些类的单独实例将在我不希望它们共享的地方共享值。我显然不擅长用文字来解释,所以我写了一些代码。在
class First(object):
def __init__(self):
self.subvar1 = 0
self.subvar2 = 10
class Second(object):
variable3 = First()
class Third(Second):
def __init__(self):
self.variable4 = self.variable3.subvar2
Firstinstance = Third()
Secondinstance = Third()
Firstinstance.variable3.subvar1 = 50
Secondinstance.variable3.subvar2 = 0
print Firstinstance.variable3.subvar2 #<-prints 0 but i want 10
print Secondinstance.variable3.subvar1 #<-prints 50 but i want 0
除了丢弃层次结构系统并编写一个大型类,在这个类中我可以防止组合类的值被共享,还有其他方法可以解决这个问题吗?在
一种方法是添加
到}不变,并防止共享这些值。在
Third
的__init__
中,这样就可以保持First
和{问题来自于
Second.variable3
是一个类属性,也就是说,由类及其子类的所有实例共享。你想要:从而产生预期的结果。在
相关问题 更多 >
编程相关推荐