Python 3:如何让一个类修改另一个类的实例中的值?

时间:2016-10-15 06:28:27

标签: python class attributes

我正在学习使用Python编写代码,我正在编写一个包含三个类作为练习的简短程序。第一个类使用第二个和第三个类的实例作为属性。我试图让第三个类中的方法更改自身实例中的值以及第二个类的实例中的值。 到目前为止,我有这样的事情:

find //C://Source_dir -type f! -name sample_file*$(date +%Y%m%d)* -exec mv {} //D://target_dir// \;

为此Class_a(): self.b_attribute = Class_b() self.c_attribute = Class_c() Class_b(): self.b_value = 5 Class_c(): self.c_value = 1 def change_values(): self.c_value += 1 instance = Class_a() instance.c_attribute.change_values() 实例调用instance.c_attribute.change_values()增加c_value为1.是否可以编写Class_a,以便调用change_values()也更改{{} 1}} 这个instance.c_attribute.change_values()的实例? 如果有可能我该如何编写该代码?

1 个答案:

答案 0 :(得分:0)

您对此类有层次结构 Class_a | | Class_b Class_c

现在您已经在Class_c中进行了更改,它会影响C_attribute组件的Class_a。

这项技术非常先进,我很惊讶你是初学者。

然而,只有因为c是a的一部分才能访问它。但是注意c不是b的一部分,反之亦然。请参阅b和c没有关系的层次结构。

处理它的一个明确方法是在。

中创建一般函数

但是如果你想在attribute_c中进行更改以使其对attribute_b具有链式效果,则必须在可以由c调用的触发器中设置。

e.g

class a():
   def a_change_b(): #trigger function
      self.b_attribute += 1

class c():
   def change_b():
     a_change_b()  #try to call the trigger function outside c but inside a

希望它有效。