我在包中有一些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')
但我不喜欢这两种方法。是否有方法引用以包为前缀的静态/类方法
应该是
在第一次尝试中,您将导入
engine
文件,并可以引用其中的类。您没有导入airplane
,只导入了该文件夹中的文件在第二次尝试中,您正在导入
Engine
类,但仍然没有导入airplane
。另外,Engine
类不属于airplane
,它位于engine.py
相关问题 更多 >
编程相关推荐