パラメータ化したいモジュールがあります。または、オブジェクトから関数をインポートしたいと考えています。
つまり、何かをインポートする前に、動作を変更する引数を与えることができるようにしたいと考えています。
1 つの方法は、モジュールをオブジェクトにして、それらの関数を使用することです。現在、私はこれを行います:
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
このようなことは可能ですか?基本モジュールから継承できますか? 何が起こっているのかユーザーに明白に見えるようにする必要があるという制約を追加するとどうなりますか?