Tom*_*mmy 5 python python-import
一段代码工作,我不明白为什么.它应该不符合我的理解.问题在下面很容易说明:
"Main.py"
from x import * #class x is defined
from y import * #class y is defined
xTypeObj = x()
yTypeObj = y()
yTypeObj.func(xTypeObj)
Run Code Online (Sandbox Code Playgroud)
"x.py"
class x(object):
def __init__...
...
def functionThatReturnsAString(self):
return "blah"
Run Code Online (Sandbox Code Playgroud)
"y.py"
#NO IMPORT STATEMENT NEEDED?? WHY
class y(object):
def __init__...
...
def func(self, objOfTypeX):
print(objOfTypeX.functionThatReturnsAString())
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么我不需要在类型的"y.py"中有一个import语句
from x import functionThatReturnAString()
Run Code Online (Sandbox Code Playgroud)
它如何弄清楚如何调用此方法?
Python是一种面向对象的编程语言.在这种语言中,值是对象,对象可以有方法.
该functionThatReturnsAString函数是类的一个方法,是该类的objOfTypeX一个实例.一个类的实例带有它所有类的方法.
这就是为什么,例如,listpython中的对象有一个.append()方法:
>>> alist = []
>>> alist.append(1)
>>> alist
[1]
Run Code Online (Sandbox Code Playgroud)
本list类有一个.append()方法,你不需要导入方法能够调用它.您所需要的只是对列表实例的引用.
从技术上讲,python list是一种类型,但这种区别在这里并不重要.总的来说,为了讨论的目的,类型与类是相同的.
请继续阅读Python教程,它将在后面的章节中解释类(但您可能希望首先浏览第一组章节).
Python 是一种动态类型语言。与 C++ 和 Java 等静态类型语言不同,对方法的调用在实际执行之前不会绑定,因此不需要导入定义了该方法的模块。这有几个含义:
请注意,这并不是动态类型语言和静态类型语言之间所有差异的详尽列表。