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日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟