2011-06-26 65 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'