从另一个 Class 调用 Python 主 Class 实例而不使用全局
Call a Python Main Class Instance from Another Class Without Global
在下面的代码中,在 main()
中创建了 class A
的实例。我想从 class B
引用该实例,而不需要将 a
声明为 global
。我怎样才能做到这一点? (注意 - 如果您 运行 这个脚本,然后 运行 第二次 global a
删除或注释掉,请确保在 [=22= 之前清除变量或重新启动内核] 宁它。否则,至少在 Spyder 中,脚本似乎 运行 OK。)
class A():
def __init__(self):
pass
def start_the_process(self):
self.b = B()
self.b.add_values(2, 3)
def print_result(self, result):
print(result)
class B():
def __init__(self):
pass
def add_values(self, val1, val2):
a.print_result(val1 + val2)
def main():
global a
a = A()
a.start_the_process()
if __name__ == '__main__':
main()
B
class 应接收 A
对象作为参数,并将其保存为属性。
class A():
def __init__(self):
pass
def start_the_process(self):
self.b = B(self)
self.b.add_values(2, 3)
def print_result(self, result):
print(result)
class B():
def __init__(self, a):
self.a = a
def add_values(self, val1, val2):
self.a.print_result(val1 + val2)
def main():
a = A()
a.start_the_process()
if __name__ == '__main__':
main()
在下面的代码中,在 main()
中创建了 class A
的实例。我想从 class B
引用该实例,而不需要将 a
声明为 global
。我怎样才能做到这一点? (注意 - 如果您 运行 这个脚本,然后 运行 第二次 global a
删除或注释掉,请确保在 [=22= 之前清除变量或重新启动内核] 宁它。否则,至少在 Spyder 中,脚本似乎 运行 OK。)
class A():
def __init__(self):
pass
def start_the_process(self):
self.b = B()
self.b.add_values(2, 3)
def print_result(self, result):
print(result)
class B():
def __init__(self):
pass
def add_values(self, val1, val2):
a.print_result(val1 + val2)
def main():
global a
a = A()
a.start_the_process()
if __name__ == '__main__':
main()
B
class 应接收 A
对象作为参数,并将其保存为属性。
class A():
def __init__(self):
pass
def start_the_process(self):
self.b = B(self)
self.b.add_values(2, 3)
def print_result(self, result):
print(result)
class B():
def __init__(self, a):
self.a = a
def add_values(self, val1, val2):
self.a.print_result(val1 + val2)
def main():
a = A()
a.start_the_process()
if __name__ == '__main__':
main()