2
可能我以錯誤的方式接近問題,並有一個更簡單的解決方案,但這是我的問題。在Python中調用類變量的裝飾器
我有這樣定義的裝飾:
def my_decorator(argument):
def wrap(f):
def wrapped_f(*args, **kwargs):
.... # does something with argument
return wrapped_f
return wrap
然後我定義一個類,它是這樣的:因爲在裝飾水平
class MyClass(object):
def __init__(argument):
self.argument = argument
@my_decorator(self.argument) # !this is an error!
def my_method(self):
.... # does something
顯然我寫的是錯了,我無法訪問self
,但解決此問題的正確方法是什麼?
我知道我忘記了一些東西!比我想象的要容易得多!謝謝! –
但'self'如何傳遞給'wrapped_f'?我得到一個TypeError:my_method(),缺少1個需要的位置參數:'self''。 – Wtower
@Wtower Python自動將'self'傳遞給'my_method',因爲'my_method()'是'MyClass'的一個實例方法。這聽起來像是你正在裝飾一個普通的函數,它不會自動獲得'self'參數。 – dano