我有一個模塊,我想參數化,或者說我想從一個對象導入函數。python中的參數模塊?從對象導入函數
這就是我希望能夠給它的參數,將改變它的行爲之前,我從它進口的東西。
一種方法是將我的模塊作爲對象並使用這些函數。目前我這樣做:
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
是這樣可能什麼?我可以繼承基礎模塊嗎?如果我添加約束條件,它應該看起來對用戶來說顯而易見是怎麼回事?
爲什麼使用一個模塊會比使用一個類越好,其實並不清晰。難道你只是希望能夠在你自己的命名空間中擁有實例方法嗎? –
我不在乎對象是否實際上是一個模塊或類。我只是想能夠很容易地將適當的函數和值導入到本地名稱空間,並讓它們仍然可以訪問我傳遞的參數。那有意義嗎? –
@JohnSalvatier:'sayhi = mod.sayhi()'究竟有什麼問題?這是一種非常常見的Python習慣用法(尤其是如果包含等效代碼,比如傳遞's.find'而不是'lambda x:s.find(x)'或'functools.partial(str.find,s)'),使得一個像類實例一樣的模塊是絕對不行的。 – abarnert