使用@property添加对象属性时搞出来的报错记录

本文记录了在使用Python的@property装饰器为对象添加width、height及只读属性resolution时遇到的两个错误。错误1是由于属性定义重复导致的AttributeError;错误2是RecursionError,由于属性名与方法名冲突,形成了无限递归。解决方案包括检查赋值权限和避免名称冲突。修复后,测试成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、实现内容:使用@property给对象Screen加上width和height属性,以及一个只读属性resolution

2-1:错误1(此处纯属脑残): 

Traceback (most recent call last):
  File "F:\w26511\python练习\test.py", line 43, in <module>
    s.width = 1024
AttributeError: can't set attribute
# -*- coding: utf-8 -*-

class Screen(object):
    
#定义width属性
    @property
    def width(self):
        return self.width
    @width.setter
    def width(self,value):
        if not isinstance(value,int):
            raise ValueError('宽度必须是数字')
        elif value<=0:
            raise ValueError('宽度必须是正数')
        else:
            self.width=value

    @property
    def height(self):
        return self.height
    @height.setter
    def height(self,value):
        if not isinstance(value,int):
            raise ValueError('宽度必须是数字')
        elif value<=0:
            raise ValueError('宽度必须是正数')
        else:
            self.height=value
            
    @property
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值