我定义了一个名为Point的类,它定义了x,y坐标系中的一个点。定义和方法如下所示。我创建了自己版本的str方法,以可打印的形式返回创建的点(必需)。但是,当我尝试将返回的点传递给另一个方法以确定两点(p1和p2)之间的距离时,我在尝试解析传递到该方法的字符串(p2)时得到以下错误:
AttributeError: Point instance has no attribute 'find'
当我传入一个定义为p2的字符串时,它应该可以正常工作。任何帮助都将不胜感激。谢谢您。在
代码如下:
^{pr2}$
Tags:
如果您打算在类中使用私有或半私有方法,请重命名函数。在
如果您的
find
方法只在Point
类中使用,请将其重命名为__find
。否则,您可以将其重命名为_find
,这会告诉其他开发人员此方法是私有的,但是他们仍然可以使用它,即使他们不应该这样做。在方法find未在对象中声明,您必须按如下方式更改find方法声明:
双下划线是为str、cmp、eq等类运算符方法保留的。。。 您可以获得有关python类here的更多信息
您将方法命名为
__find__
。删除双下划线:您实际上应该只对Special method names使用
__...__
“dunder”(双下划线)方法名,以避免混淆和将来的名称冲突。在但是,您正在传递一个
^{pr2}$Point
实例,因此只需直接访问属性:或者,进一步简化,使用Python中最常用的下划线名称样式作为方法:
然后可以删除
__find__
和__getitem__
方法,它们看起来像是试图让.DistanceTo()
方法工作。在然后整个类变成:
对类(继承自
object
)和__str__
方法(使用字符串格式)使用稍微多一点的Python习惯用法。在现在,类的行为与预期一致:
类实例不是字符串,尽管可以将它们转换为字符串(例如打印时),但不需要将它们视为字符串。直接访问它们的属性。在
相关问题 更多 >
编程相关推荐