【发布时间】:2021-12-20 14:56:45
【问题描述】:
共有三个等级(A、B、C)。 A 类是 master,使用 B 类和 C 类的一些数据。B 类使用 C 类的数据,C 类的一个实例通过 A 传递给 B。
示例代码如下()
a.py
from b import SomeB
from c import SomeC
class SomeA(object):
def __init__(self):
self.object_c = SomeC()
self.object_b = SomeB(self.object_c)
self.some_work_with_obj_c_data()
self.some_work_with_obj_b_data()
def some_work_with_obj_c_data(self):
self.object_c.some_var_for_a += 1
print(self.object_c.some_var_for_a)
def some_work_with_obj_b_data(self):
self.object_b.some_var_for_a += 1
print(self.object_b.some_var_for_a)
if __name__ == "__main__":
object_a = SomeA()
b.py
class SomeB(object):
def __init__(self, object_c_from_a):
self.some_var_for_a = 5678
self.object_c_from_a = object_c_from_a # an instance of the SomeC class from C.py
self.some_work_with_obj_c_data()
def some_work_with_obj_c_data(self):
self.object_c_from_a.some_var_for_b += 1
print(self.object_c_from_a.some_var_for_b)
c.py
class SomeC(object):
def __init__(self):
self.some_var_for_b = 1234
self.some_var_for_a = 4321
在实际情况下,它是两个 GUI 窗口(A 和 B),以及一些数据处理程序 (C)。
基本上,B 类没有明确指定我们正在处理的数据类型(特别是如果您没有指定注释)。 IDE 中也没有自动完成代码(例如 PyCharm)。
是否有一种机制可以指定变量是对特定类实例的引用?还是有一个更全球性的架构问题,原则上不应该存在?
【问题讨论】:
标签: python python-3.x class oop