Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从包导入类的正确方法_Python_Python 3.x - Fatal编程技术网

在Python中从包导入类的正确方法

在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调用静态方法是不正确的 出现错误的屏幕截图: [在问题更新为图片后编辑] 因

我在package
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)