有一段代码可以工作,但我不明白为什么。根据我的理解,它不应该起作用。下面很容易说明问题:
“主要.py”
from x import * #class x is defined
from y import * #class y is defined
xTypeObj = x()
yTypeObj = y()
yTypeObj.func(xTypeObj)
“x.py”
class x(object):
def __init__...
...
def functionThatReturnsAString(self):
return "blah"
“y.py”
#NO IMPORT STATEMENT NEEDED?? WHY
class y(object):
def __init__...
...
def func(self, objOfTypeX):
print(objOfTypeX.functionThatReturnsAString())
我的问题是为什么我不需要在“y.py”类型中有一个导入语句
from x import functionThatReturnAString()
它是如何弄清楚如何调用这个方法的?
最佳答案
Python 是一种面向对象的编程语言。在这种语言中,值是对象,对象可以有方法。
functionThatReturnsAString
函数是一个类的方法,objOfTypeX
是该类的实例。类的实例带有其类的所有方法。
这就是为什么,例如,python 中的 list
对象有一个 .append()
方法:
>>> alist = []
>>> alist.append(1)
>>> alist
[1]
list
类有一个.append()
方法,您无需导入该方法即可调用它。您所需要的只是对列表实例的引用。
从技术上讲,python list
是一种类型,但这种区别在这里并不重要。总的来说,就本次讨论而言,类型与类是一回事。
请务必阅读 Python Tutorial ,它在后面的章节中解释类(但您可能想先浏览第一组章节)。
关于python - 我们什么时候需要 Python 导入语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365848/