我在包中有一些Python模块,如下所示:
root/
airplane/
__init__.py
propeller.py # defines class Propeller
engine.py # defines class Engine
boat/
__init__.py
engine.py # defines class Engine为了避免歧义,我想引用以包为前缀的类构造函数(或其他类/静态方法):
airplaneEngine = airplane.Engine('4 cylinder')
boatEngine = boat.Engine('6 cylinder')
if boatEngine.isFasterThan(airplaneEngine): print('Boat wins!')但是我不能让导入正常工作。
from airplane import engine
airplaneEngine = airplane.Engine('4 cylinder')
# NameError: name 'airplane' is not defined
from airplane.engine import Engine
airplaneEngine = airplane.Engine('4 cylinder')
# NameError: name 'airplane' is not defined我意识到我可以做到:
from airplane.engine import Engine as AirplaneEngine
airplaneEngine = AirplaneEngine('4 cylinder') 或者这样:
root/
airplane.py # defines class Propeller & class Engine
boat.py # defines class Engine
import airplane
airplaneEngine = airplane.Engine('4 cylinder')但我不喜欢这些解决方案中的任何一个。有没有办法引用以包为前缀的静态/类方法?
发布于 2019-05-23 01:47:44
from airplane import engine
airplaneEngine = airplane.Engine('4 cylinder')
# NameError: name 'airplane' is not defined
from airplane.engine import Engine
airplaneEngine = airplane.Engine('4 cylinder')
# NameError: name 'airplane' is not defined应该是
from airplane import engine
airplaneEngine = engine.Engine('4 cylinder')
from airplane.engine import Engine
airplaneEngine = Engine('4 cylinder') 在第一次尝试中,您导入的是engine文件,并且可以引用其中的类。您尚未导入airplane,只是导入了该文件夹中的文件。
在第二次尝试中,您正在导入Engine类,但仍然没有导入airplane。此外,Engine类不属于airplane,它位于engine.py中
https://stackoverflow.com/questions/56262278
复制相似问题