breaki 发表于 2020-7-20 18:23:31

Python

class My:
    def __init__(self,fget=None,fset=None,fdel=None):
      self.fget=fget
      self.fset=fset
      self.fdel=fdel
    def __get__(self,instance,owner):
      return self.fget(instance)
    def __set__(self,instance,value):
      self.fset(instance,value)
    def __delete__(self,instance):
      self.fdel(instance)
class C:
    def __init__(self):
      self._x = None
    def getx(self):
      return self._x
    def setx(self,value):
      self._x = value
    def delx(self):
      del self._x
    x = My(getx,setx,delx)

c = C()
c.x='yjc'
c.x
'yjc'
c._x
'yjc'
为什么c._x也是yjc。

zltzlt 发表于 2020-7-20 18:26:27

因为 c.x = 'yjc' 这一句 会调用 c.setx('yjc') 方法,将 c._x 也设置为 'yjc' 。

breaki 发表于 2020-7-20 18:42:46

zltzlt 发表于 2020-7-20 18:26
因为 c.x = 'yjc' 这一句 会调用 c.setx('yjc') 方法,将 c._x 也设置为 'yjc' 。

class My:
    def __init__(self,fget=None,fset=None,fdel=None):
      self.fget=fget
      self.fset=fset
      self.fdel=fdel
    def __get__(self,instance,owner):
      return self.fget(instance)
    def __set__(self,instance,value):
      self.fset(instance,value)
    def __delete__(self,instance):
      self.fdel(instance)
这一串代码有什么用。

zltzlt 发表于 2020-7-20 18:48:39

breaki 发表于 2020-7-20 18:42
class My:
    def __init__(self,fget=None,fset=None,fdel=None):
      self.fget=fget


定制一个自己的 property 。
页: [1]
查看完整版本: Python