python - 我们什么时候需要 Python 导入语句?

标签 python python-import

有一段代码可以工作,但我不明白为什么。根据我的理解,它不应该起作用。下面很容易说明问题:

“主要.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/

相关文章:

python - Python 中的包路径错误

python - 从命令行使用 Electrum 时没有模块名称 'xmlrpclib'

python - 如何将 x 和 y 轴上的值更改为 seaborn pairplot 中的单词?

导入另一个python模块的python模块

python - 解决运行grinder脚本时出现的ImportError : No modules named ,

python - 如何输入参数以列表或元组的形式运行?

python - 调试 Python 导入失败 (ModuleNotFoundError)

python - MATLAB 引擎和 Imatest IT 的导入冲突

python - matplotlib 复值函数图

python - 使用vobject在django-python中解析vcf文件