2011-06-26 94 views
2

我有一個屬性裝飾這樣:物業裝飾

def Property(f): 
    """ 
    Allow readable properties without voodoo. 
    """ 
    fget, fset, fdel = f() 
    fdoc = f.__doc__ 
    return property(fget, fset, fdel, fdoc) 

使用(例如)這樣:

@Property 
    def method(): 
     """""" 
     def fget(self): 
      return some expression... 
     return fget, None, None 

所以我的問題是關於這樣做的蟒蛇方式。 Pydev的抱怨

「的方法method應該有自我爲 第一個參數」

而且pylint的給我

方法沒有參數

我知道我可以在pydev中關閉這個錯誤消息,但我想知道是否有更好的方法來管理方法那些不以自我爲參數的東西,我可以做得更好。

回答

10

您可以使用@staticmethod來創建一個方法,該方法不會收到隱含的第一個參數。 Python的@property修飾器是否已經做到了你想要的?

class Foo(object): 
    @property 
    def bar(self): 
     return 'foobar' 

>>> foo = Foo() 

>>> foo.bar 
<<< 'foobar'