2017-08-12 44 views
-3

如何使用的方法裝飾,把它的類外直接返回一個內存地址:<function decor at 0x104e167b8>,並把它裏面提出了一個如何在方法上使用裝飾器?

TypeError: 'NoneType' object is not callabl

我也嘗試添加*args因爲在一個self該方法的參數。

+3

你可以發佈你的代碼,以便我們更好地理解你的問題嗎? – wencakisa

+2

你能提供一些這些錯誤的代碼示例嗎? – chrki

+2

也許在[Documentation](https://stackoverflow.com/documentation/python/229/decorators#t=201708121148482706389)中查看可能有幫助 –

回答

0

類中的一個裝飾的樣本實現是這樣的:

class Foo: 
    def __init__(self): 
     pass 

    def decor(function): 
     def wrap(*args, **kwargs): 
      # Whatever your decorator does here 
      return function(*args, **kwargs) 
     return wrap 

    @decor 
    @staticmethod 
    def bar(): 
     pass 

或致電本上的Foo一個實例:

foo = Foo() 
foo.bar() 

如果你的裝飾需要self訪問:

class Foo: 
    def __init__(self, spam): 
     if spam is not None: 
      self.spam = spam 

    def require_spam(function): 
     def wrap(self, *args, **kwargs): 
      try: 
       self.spam 
      except AttributeError: 
       return 
      return function(self, *args, **kwargs) 
     return wrap 

    @require_spam 
    def bar(self): 
     pass 
相關問題