我正在尝试在Python 3.5中构建一个包
我的代码目录如下
Get-ChildItem $dump_path -Recurse -Directory |
Where-Object {$_.LastWriteTime -lt $del_date } |
Get-ChildItem -Recurse |
Remove-Item -Recurse -Confirm:$False -Force -WhatIf
所有汽车都扩展了mypackage
|-- requirements.txt
|-- setup.py
|--vehicle
|-- __init__.py
|-- testdrive.py
|-- cars
|-- __init__.py
|-- basecar_abstract_class.py
|-- prius.py
|-- volt.py
|-- leaf.py
|-- tesla.py
|-- civic.py
|-- there could be 100 of car classes ....
中定义的抽象类。 basecar_abstract_class
方法是一种抽象方法,必须在每个汽车类中定义
run
代码段如下:
testdrive.py
所以我的问题是:如何为被叫车动态加载模块和类(也在评论中提到)。具体来说,我想知道有什么变化(行添加/编辑),我需要在class TestDrive(object):
def __init__(self):
pass
def runmycar(carname):
# if tesla is passed as car name, then I want
# it should first load tesla from cars module *DYNAMICALLY*
# so that I can call tesla's run method defined in tesla.py
# vehicle.tesla.run() ??
中进行以实现我的目标
目前testdrive.py
文件夹中的__init__.py
只是空的。你觉得,我还需要在那里放任何代码来实现我的目标吗?
答案 0 :(得分:0)
import importlib
import cars
def runmycar(car_name):
#car_name = 'Tesla'
module_name = '.' + car_name.lower()
mod = importlib.import_module(module_name, 'cars')
cls = getattr(mod, car_name)
obj = cls()
obj.run()