【发布时间】:2012-12-27 09:12:10
【问题描述】:
我正在为 gupshup、nexmo、redrabitt 等服务提供商编写不同的 python 模块。
#gupshup.py
class Gupshup():
def test():
print 'gupshup test'
所有其他模块都有 test() 方法,其中包含不同的内容。我知道要调用谁的 test()。我想写另一个模块 provider,它看起来像 -
#provider.py
def test():
#call test() from any of the providers
我将传递一些 sting 数据作为命令行参数,该参数将具有模块的名称。
但我不想用import providers.* 导入所有模块,然后调用providers.gupshup.test() 之类的方法。只要知道我将在运行时调用谁的 test(),当我想调用它的测试方法时,如何只加载 nexmo 模块?
【问题讨论】:
-
该死的,你在做什么?您避免使用类的原因毫无意义,您所追求的似乎仍然是多态性(只是没有继承),但是您仍然使用继承和类,委托类没有理由存在,整个事情通常是混乱的.我可以建议您退后一步,描述一下您要解决的实际问题吗?
-
我想将 Car、Bike、Truck 类放在单独的文件中。因此,当我需要添加车辆时,我会将文件添加到包含这些类的文件夹中。我知道我要调用谁的方法 - move()。汽车、自行车或卡车。但我不想导入所有类然后执行 Car.move()。
-
嗯...我仍然不确定您的问题是什么,但是:(1)您可以在您想要的任何文件(模块)中放置任意数量的类。你可以在一个模块中有多个类,你可以让它们分布在不同的项目中,等等。(2) 你不需要为此导入 all 类。但是您至少需要具体类及其超类(显然;否则,您将如何继承任何东西?)。 (3)如果你不需要继承任何东西,那就不要继承。您不一定需要超类;使用鸭子打字!
-
我应该删除这个问题,因为它看起来很混乱并写一个新的?
-
您可以编辑它。虽然如果您花一些时间思考和重新阅读它可能会有所帮助。
标签: import python-2.7