就像標題說。 例如: 我有一類這樣的:如何爲之前創建的類添加新的函數?
class NewClass():
def func1():
.....
那麼我想添加一個新功能到此類程序文件運行時。 就像重新分配新的值類的屬性。 例如
NewClass.a = 3
就像標題說。 例如: 我有一類這樣的:如何爲之前創建的類添加新的函數?
class NewClass():
def func1():
.....
那麼我想添加一個新功能到此類程序文件運行時。 就像重新分配新的值類的屬性。 例如
NewClass.a = 3
如果你想添加一個函數類的類型本身,你可以爲它分配,確保包括通過對自我參照的說法:
>>> class Quz(object):
... def __init__(self):
... self.a = "A"
...
>>> def qux(self):
... print self.a
...
>>> Quz.qux = qux
>>> q = Quz()
>>> q.qux()
A
您可以使用types.MethodType()
創建綁定實例方法,如果你只是想給函數添加到類的一個實例:
>>> import types
>>> class Foo(object):
... def __init__(self):
... self.a = "A"
...
>>> def bar(self):
... print self.a
...
>>> f = Foo()
>>> f.bar = types.MethodType(bar, f, Foo)
>>> f.bar()
A
這是相同的過程添加非函數類型的屬性:
對於整個類:
>>> class Foo(object):
... pass
>>> Foo.baz = lambda self: "Foobaz"
>>> f = Foo()
>>> f.baz()
'Foobaz'
編輯:
這裏的東西不要做,除非你是光榮懶惰,並且知道並不關心利弊等同於Amber在她的評論中指出。
對於一個實例:
>>> bar = Foo()
>>> bar.biz = lambda: "barbiz"
>>> bar.biz()
'barbiz'
爲什麼你需要添加它,而它是_running_而不是在源代碼? – jlarson 2012-03-11 23:57:40
這聽起來並不correct..if可能你能「編輯」你的答案,並提供一些關於你做什麼方面的,也許我們可以幫助你得到你想要的結果,而無需編輯正在運行的程序? – 2012-03-12 00:02:44