Python property returning property object

后端 未结 4 1832
别跟我提以往
别跟我提以往 2021-02-19 02:57

I have a class like this:

class Foo(object):
    def __init__(self):
        self.bar = property(self.get_bar)

    def get_bar(self):
        return \"bar\"

pr         


        
4条回答
  •  长情又很酷
    2021-02-19 03:32

    You can also do it like shown here:

    class Foo(object):
        def __init__(self):
            self._bar = None
    
        @property
        def bar(self):
            return self._bar
    
        @bar.setter
        def bar(self, value):
            self._bar = value
    
        @bar.deleter
        def bar(self):
            self._bar = None # for instance
    

    which is equivalent to:

    class Also_Foo(object):
        def __init__(self):
            self._bar = None
    
        def get_bar(self):
            return self._bar
    
        def set_bar(self, value):
            self._bar = value
    
        def del_bar(self):
            self._bar = None # for instance
    
        bar = property(fget=get_bar, fset=set_bar, fdel=del_bar, doc=None)
    

    BUT without polluting the class namespace with get and set methods for each attribute.

    You retain external direct access to the variable by using ._bar instead of .bar.

提交回复
热议问题