我有一个我想参数化的模块,或者更确切地说我想从一个对象中导入函数。
那就是我希望能够在我从中导入东西之前给它提供改变其行为的参数。
一种方法是让我的模块成为一个对象,然后只使用这些函数。目前我这样做:
class MyModule(object):
def __init__(self, previous_sayings):
self.sayings = previous_sayings
__all__ = ['sayhi']
def sayhi(self):
self.sayings.append("hi!")
mod = MyModule(["oh no!"])
sayhi = mod.sayhi
sayhi()
sayhi()
print mod.sayings
这应该打印出来["oh no!", "hi!", "hi!"]
。
但是,您拥有的功能越多,效果就越差。
我希望能够做这样的事情:
mod = MyModule(["oh no!"])
from mod import *
sayhi()
sayhi()
print mod.sayings
这样的事情可能吗?我可以从基本模块继承吗?如果我添加对用户来说应该很明显的约束怎么办?