Python:是否可以链接属于两个不同类的两个变量?

时间:2017-12-18 09:10:25

标签: python class

我想将两个变量连接到两个不同的类但我不知道我正在尝试做的是否可能。

例如,如果我有这两个类:

class one():
    def __init__(self):
        self.a = 0
    def compute(self):
        self.a = self.a + 1


class two():
    def __init__(self):
        self.a = 0
        self.C_one = one()
        self.link()

    def link(self):
        self.a = self.C_one.a

    def compute(self):
        self.C_one.compute()
        print('C_one a=',self.C_one.a )
        print('C_two a=',self.a )

C_two = two()
for i in range(5):
    C_two.compute()

在课程two中,我想将变量a与类a的变量one相关联,因此我不必显式调用{{1}每次执行self.a = self.C_one.a

示例中的代码告诉我:

C_two.compute

这不是我期望的结果。 有人知道我能在python中做到吗?

更新

从以下示例中

C_one a= 1
C_two a= 0
C_one a= 2
C_two a= 0
C_one a= 3
C_two a= 0
C_one a= 4
C_two a= 0
C_one a= 5
C_two a= 0

是否可以使用deceze的答案并用属性替换注释行class one(): def __init__(self): self.a = 0 def compute(self): self.a = self.a + 1 class two(): def __init__(self): self.a = 0 class three(): def __init__(self): self.C_one = one() self.C_two = two() self.b = 0 def compute(self): self.C_one.compute() #self.C_two.a = self.C_one.a print('C_one a=',self.C_one.a ) print('C_two a=',self.C_two.a ) C_three = three() for i in range(5): C_three.compute() ?就像课程#self.C_two.a = self.C_one.aone在课程two中链接一样。

来自deceze的回答

three

1 个答案:

答案 0 :(得分:7)

two.a定义为property

class two:
    def __init__(self):
        self.C_one = one()

    @property
    def a(self):
        return self.C_one.a

    ...