mmx669 2021-12-20 15:06 采纳率: 94.4%
浏览 13
已结题

python中,请教属性访问属性的过程讲解

问题遇到的现象和发生背景

理不清楚在代码中,属性访问属性是怎样执行的,请讲解属性访问属性的过程

问题相关代码,请勿粘贴截图
>>> class C:
    def __init__(self,size=10):
        self.size = size
    def getSize(self):
        return self.size
    def setSize(self,value):
        self.size = value
    def delSize(self):
        del self.size
    x = property(getSize,setSize,delSize)

    
>>> 
>>> c = C()
>>> c.x
10
>>> c.x = 12
>>> c.x
12
>>> x.size
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    x.size
NameError: name 'x' is not defined
>>> c.size
12
>>> del c.size
>>> c.size
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    c.size
AttributeError: 'C' object has no attribute 'size'

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 橙子CK 2021-12-23 15:37
    关注
    
    
    ```python
    
    class C:
    
        def __init__(self, size=10):
            self.size = size
        def getSize(self):
            return self.size
        def setSize(self, value):
            self.size = value
        def delSize(self):
            del self.size
        x = property(getSize, setSize, delSize)
    
    
    c = C()
    print(c.size)  # 访问初始化属性
    print(c.x)  # 获取时,默认调用x的第一个参数'getSize'
    c.x = 20  # 当你想赋值时,调用x的第二个参数,'setSize',隐式调用
    print(c.x)
    c.delSize()  # 删除属性,显示调用
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 12月20日