因此,我遇到了这个answer,是从另一个类中调用类方法的。现在我的问题是,为什么仅通过以下代码就可以完成这么复杂的事情呢?
class a(object):
def __init__(self):
pass
def foo(self):
print('Testing')
class b(object):
def __init__(self, c):
c.foo()
A = a()
B = b(A)
输出为:
Testing
那么我的方法有什么问题?我想念什么吗?
答案 0 :(得分:3)
基本上,由于Zen of Python表示:
显式优于隐式。
复杂胜于复杂。
从OOD(面向对象设计)的角度来看,您在两个类之间具有很强的依赖性,因为如果不调用类A的特定方法就无法初始化B,那现在就可以了,但是向前发展这种依赖性可能会导致长期运行中的问题。要更深入地了解这一点,请确保您熟悉Single responsibility principle和Separation of concerns的原理。
通常来说-如果在初始化期间总是调用另一个类的某个方法,则该方法可能应该从另一个类中移出。或者,您可以创建实用程序函数来处理该函数,而无需在类之间引入硬依赖性。
此外,SO问题中提供的解决方案也有所不同,因为它具有动态调用方法的名称,而不像您的示例中那样对名称进行硬编码。