class Screen(object):
@property
def width(self):
return self._width
@width.setter
def width_setter(self, value):
if not isinstance(value, int):
raise ValueError("Screen's width must be an integer.")
self._width = value
@property
def heigh(self):
return self._heigh
@heigh.setter
def heigh_setter(self, value):
if not isinstance(value, int):
raise ValueError("Screen's width must be an integer.")
self._heigh = value
@property
def resolution(self):
return self._width * self._heigh
sc = Screen()
sc.width = 1080
Traceback (most recent call last):
File "C:\Users\asj\AppData\Local\Programs\Python\Python310\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
AttributeError: can't set attribute 'width'
仔细检查后更改的代码如下:
class Screen(object):
@property
def width(self):
return self._width
@width.setter
def width(self, value1):
if not isinstance(value1, int):
raise ValueError("Screen's width must be an integer.")
self._width = value1
@property
def heigh(self):
return self._heigh
@heigh.setter
def heigh(self, value2):
if not isinstance(value2, int):
raise ValueError("Screen's width must be an integer.")
self._heigh = value2
@property
def resolution(self):
return self._width * self._heigh
Ethann
记录一个挫败经历~
原始代码如下:
仔细检查后更改的代码如下:
下面的代码能用,为什么上面的不行呢?原因在于我在
@width.setter
和@heigh.setter
后面的方法是:def width_setter (self,value)
和def heigh_setter (self, value)
,方法名和.setter
之前的不同,导致了AttributeError: can't set attribute 'width'
。特此记录一下~