【发布时间】:2021-04-25 22:33:12
【问题描述】:
我有两个班级,我想分别称它们为 class A 和 class B;我需要通过 B 类全局更改 A 类的一些初始值而不制作/返回来自 A 类的任何新对象(B 类不应读取主应用程序变量,也不应从中生成全局变量)。
这是我所做的:
class A:
def __init__(self):
self.blah1_is_beautiful = True
self.blah2_is_beautiful = True
self.blah3_is_beautiful = True
class B:
def __init__(self):
self.null_is_null = None
def change_some_values(self):
# Class A instance should update here
A.blah1_is_beautiful = False
A.blah2_is_beautiful = False
A.blah3_is_beautiful = False
obj1 = B()
obj1.change_some_values()
# Some codes ...
new_A_class = A()
print(new_A_class.blah1_is_beautiful)
但我无法得到预期的结果。
注意:我不想在我的主应用程序上从 A 类创建一个对象,或者在 B 类中将其作为全局变量调用并更改其实例; B 类应自行更新 A 类实例,而不使用任何外部变量。
感谢您对此提供任何帮助。
【问题讨论】:
-
查看您当前的示例。如果调用了 B 类的 change_some_values,您似乎想要更改 A 类的所有实例的值。我理解正确吗?
-
@Hendrik 无论如何,B 类可以在不使用外部变量的情况下更新 A 类实例吗?这是我的问题
-
@Hendrik;阅读这个场景:A 类和 B 类来自两个不同的模块; B 类自然对主要应用变量一无所知;所以它不能将这些变量称为全局变量。 B 类只知道 A 类名称;只是这个;可以调用它;继承的或任何类型的这些功能
-
@Hendrik;我想我需要提出新问题。
-
"只知道A类的名字"所以
change_some_values只知道有一个类叫A,却不知道blah123属性的存在?那么它到底在 A 类中更新了什么?
标签: python oop global-variables global python-class