如果我有两个文件class1_file.py
和class2_file.py
,并且每个文件都有类class1
和class2
。
class1_file.py
class class1:
def dummy(self, class2):
class2.dummy()
class2_file.py:
class class2
def dummy(self):
print 'hey'
我是否需要包括:
from class2_file import class2
到class1_file.py
中,以使class1 dummy
中的方法起作用?我有点困惑,因为我来自强类型语言,它需要导入类并将它们传递给使用的方法。但是对于python来说,参数似乎可以是任何类型,并且可以在编译时解析。如果不需要,class1
中的方法如何知道dummy
函数class1
的内容? 最佳答案
如果您打算将class2
的对象传递给class1
的dummy
,则要创建class2
的对象,您需要导入class2。
from class2_file import class2
class class1:
def dummy(self, obj): # To avoid confusion changed the variable name
obj.dummy()
class1().dummy(class2()) # import is needed for `class2()` part only
除此之外,
class2
只是一个变量名,可以是任何东西。这就是为什么我在此答案中将其更改为obj
的原因。当您执行
class2()
时,Python会在所有有效范围内查找class2
的定义,但找不到该定义。但是当你这样做from class2_file import class2
您在此模块中将
class2
作为本地名称引入。因此,Python将能够识别它。 def dummy(self, class2):
class2.dummy()
当您创建这样的函数时,Python将尝试执行
class2.dummy()
,并且它将class2
作为参数而不是作为类,因为class2
是作用域中最接近的名称。只要为class2
传递的值具有dummy
方法,该行将被正确评估。关于python - Python将类对象传递给另一个类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21871595/