在Python中从包导入类的正确方法
我在package在Python中从包导入类的正确方法,python,python-3.x,Python,Python 3.x,我在packagea中有这样一个类: class A: @staticmethod def method(param1, param2): ... return something 在python文件中: from a import A print(A.A.method(p1,p2)) 我的定义有什么错?我认为用Class.Class.method调用静态方法是不正确的 出现错误的屏幕截图: [在问题更新为图片后编辑] 因
a
中有这样一个类:
class A:
@staticmethod
def method(param1, param2):
...
return something
在python文件中:
from a import A
print(A.A.method(p1,p2))
我的定义有什么错?我认为用Class.Class.method调用静态方法是不正确的
出现错误的屏幕截图:
[在问题更新为图片后编辑] 因此,您的顶级应用程序名为
a
,您可以在图片左侧“信息”下方的图片中看到这一点。然后有一个名为a
的模块,您可以在文件夹a
下看到文件a.py
。此模块A
具有名为A
因此,当您从导入a中执行操作时,您正在导入文件a.py
该文件有一个class a()
,它有def方法(p1,p2)
你说A.A.method()
正在工作。。。这是正确的
现在变成了
from a import A
print(A.A.method(p1,p2)
或者
import a
print(a.A.A.method(p1,p2)
或
我的建议是:开始使用一些更具描述性的名称,而不是a
来表示top
对于模块
和A
以及A
类
我不明白你为什么放了两次A。因为我收到了错误:AttributeError:module'A.A'没有属性'method'你的屏幕截图与你的代码不同。是的,因为A.A.method(p1,p2)
起作用,我说“我认为不正确”,我展示了一种我认为正确但不起作用的方式。我在控制台中进行了测试,结果是一样的。我将PyCharm与Python3.6结合使用。我理解,并在询问之前尝试了此解决方案,但不起作用。我现在不知道我的python是不是出了问题。我添加了两个有错误的截图。谢谢你的建议。在实践中,我有描述名称,但这只是为了解释。我知道会发生什么,谢谢。因此,我要做的正确顺序是从package.file\u name import class
执行。现在我更了解Python中的导入。
from a.A import A
print(A.method(p1, p2)