Python 不使用主文件中的变量调用外部类
我遇到了一个问题,在类A中调用方法时,我需要设置值或调用其他类中的一些函数,但我需要将它们全部放在同一个python文件中,这真的很长很难看 . 有没有合适的方法把它写干净 理想情况下,我希望这些类可以在单独的python文件中Python 不使用主文件中的变量调用外部类,python,Python,我遇到了一个问题,在类A中调用方法时,我需要设置值或调用其他类中的一些函数,但我需要将它们全部放在同一个python文件中,这真的很长很难看 . 有没有合适的方法把它写干净 理想情况下,我希望这些类可以在单独的python文件中 A类: 定义初始化(自): 超级(A,self)。\uuuu init\uuuuu() 自我价值=10 def设置(自身、新_值): self.value=新值 #设置B值=新的_值*2 c、 b.set(新的_值*2) #设置C值=新值/2 c、 值=新值/2 B类:
A类:
定义初始化(自):
超级(A,self)。\uuuu init\uuuuu()
自我价值=10
def设置(自身、新_值):
self.value=新值
#设置B值=新的_值*2
c、 b.set(新的_值*2)
#设置C值=新值/2
c、 值=新值/2
B类:
定义初始化(自):
super(B,self)。\uuuuu init\uuuuuuu()
自我价值=10
def设置(自身、新_值):
self.value=新值
C类:
定义初始化(自):
super(C,self)。\uuuuu init\uuuuuuu()
self.value=1
self.a=a()
self.b=b()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
c=c()
#类a函数被调用,然后类B和类C做一些事情。。。
c、 一套(100)
打印(c值)
打印(c.a.值)
打印(c.b.值)
有许多解决方案可以解决您的设计约束,但这里有一个解决方案可以消除依赖关系:
# imagine each of these classes are in their own projects (/A,/B,/C), in their own files (A.py, B.py, C.py)
class A:
def __init__(self, c):
self.value = 10
self.c = c
def set(self, new_value):
self.value = new_value
# set B value = new_value * 2
self.c.b.set(new_value * 2)
# set C value = new_value / 2
self.c.value = new_value / 2
# class B as before
class C:
def __init__(self, A, B):
self.value = 1
self.a = A()
self.b = B()
# Now main.py
from A.A import A
from B.B import B
from C.C import C
if __name__ == '__main__':
c = C(A, B) # Pass in the classes A and B which C will instantiate
# class a function is called then class B and class C do somethings ...
c.a.set(100)
print(c.value)
print(c.a.value)
print(c.b.value)
顺便说一句:一个不从另一个类派生的类不需要调用super init。我不确定我是否完全理解这个问题,但听起来你好像不知道
import
语句?所有这些在我看来都是一个糟糕的设计。在A.set
中,依赖变量c
,该变量在设置代码中全局定义。我知道这是一个玩具的例子,但你希望实现什么样的耦合?A和C需要紧密耦合吗?您可以将C的一个实例传递给C上的A成员,并在调用.set()时更新C。您的意思是导入类的变量/实例吗?