繁体   English   中英

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

[英]Python 3: How do I get one class to modify values in an instance of another class?

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

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实例的Class_a增加1。是否可以编写change_values()以便调用instance.c_attribute.change_values()b_value此实例的Class_a 如果有可能,我将如何编写该代码?

您对该Class_a |的类具有层次结构 | Class_b Class_c

现在,您已经完成了对Class_c的更改,并且它会影响c_attribute组件的Class_a。

该技术非常先进,让您初学者学习它感到惊讶。

但是,这仅是可访问的,因为c是a的一部分。 但是注意c不是b的一部分,反之亦然。 看到b和c没有关系的层次结构。

处理此问题的一种清晰方法是在中执行一般功能。

但是,如果要对attribute_c进行更改,以使其对attribute_b产生连锁影响,则必须在a中设置一个可由c调用的触发器。

例如

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

希望它能工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM