如果parent
是一類,那麼你就可以訪問它的屬性,就像你使用一個類的任何其他方法,通過給自身參數,並使用。
如果不是一類,也許是爲了處理這將是一個包裝/工廠/內的東西,而不是直接的方法寫你的函數的最佳方式。
def some_method_wrapper(parent):
def some_method():
#access any parent attribute
#by using the parent positional argument passed to the function
print parent.desired_attribute
return 'blabla'
setattr(parent, 'new_attr', some_method)
然後,您可以使用parent.new_attr()
,它將能夠打印/處理/無論您想要的任何父級屬性。
下面是如何使用此操作上的功能的計數器(或者說,沖洗功能緩存)更充實的例子。
def parent_function(numbers):
# do something with numbers
parent_function.counter += 1
return sum(numbers)
parent_function.counter = 0
def add_reset_function(parent):
def reset_counter():
parent.counter = 0
setattr(parent, 'reset', reset_counter)
# call parent_function a few times
numbers = [1, 2, 3]
for i in range(4): parent_function(numbers)
print parent_function.counter # 4
add_reset_function(parent_function)
# call the reset function just added
parent_function.reset()
print parent_function.counter # 0
parent_function(numbers)
print parent_function.counter # 1
什麼是'parent'? – martineau
任何具有其他屬性的對象 – eos87
您需要發佈更多關於您想要做什麼的信息 – Daenyth