python - 属性类转换 python
问题描述
我的 LabelledPoint 类继承自我的 Point 类。我希望这个类具有 x 和 y 坐标以及一个将是字符串的标签属性。
import numbers
def clamp(v,_min,_max):
return max(min(v,_max),_min)
class Point:
def __init__(self,x,y):
self.x = clamp(x,0,10)
self.y = clamp(y,0,10)
def __str__(self):
return(str((self.x,self.y)))
@property
def _add_(self,p):
a=self.x + p.x
b=self.y + p.y
return Point(a,b)
@property
def x(self):
return self.__x
@x.setter
def x(self, value):
if not isinstance(value, numbers.Number):
raise AttributeError()
self.__x = clamp(int(value), 0, 10)
@property
def y(self):
return self.__y
@y.setter
def y(self, value):
if not isinstance(value, numbers.Number):
raise AttributeError()
self.__y = clamp(int(value), 0, 10)
class LabelledPoint(Point):
def __init__(self,x,y,label):
Point.__init__(self,x,y)
label=str()
self.label=label
def __str__(self):
return (str((self.label)))
def _get_label(self):
return self._label
def _set_label(self,label):
raise AttributeError()
label=property(_get_label,_set_label)
return label
我想获得这个输入:
lp = LabelledPoint(5,15, "foo")
print (lp) # output "(5,10) : foo"
我只获得输出:
(5,10)
我不知道我的错误在哪里谢谢
解决方案
def __str__(self):
return '{} : {}'.format(Point.__str__(self), self.label)
您的
_str_
方法周围只有一个下划线。它也不会对价值做任何事情Point.__str__(self)
- @Patrick Haugh
(我自己不能说更好)
推荐阅读
- c# - 为国家下拉列表序列化对象
- r - 将包含总计和百分比的行添加到 DT 数据表
- c# - 使用 C# 登录远程计算机
- angular - 如何使用 angular、ng-zorro-antd 等配置 Tailwind css?
- bash - 带有单个点 (cd .) 的 chdir 的用途
- sql - SQL Server:检测列更改
- python - 在 Python 中将数字计数为字符串
- react-native - 是否可以更改 React Native 日历选定日期的样式?
- html - 无论我尝试什么,我的 CSS 文件都会出错
- javascript - 如何识别何时在 JavaScript 中使用 : 或 =?