我来自Racket的Python。在拍,我会定义一个Point
结构是这样的:现在如何定义基本的Python结构?
(struct Point (x y) #:transparent)
的一点是与名为x
和y
两个字段的结构。我可以通过调用equal?
来比较两个结构(深层)的相等性。
Python中的等价物是什么?它看起来对我来说,我必须写线:
class Point():
def __init__(self,x,y):
self.x = x;
self.y = y;
def __eq__(self, other):
return ((type(other) is Point)
and self.x == other.x
and self.y == other.y)
def __ne__(self, other):
return not(self == other)
...但肯定有更简单的方法?
鸡蛋里挑骨头,你需要一个'#:在你的'struct'定义'#lang racket' transparent'得到深平等,但是这并不会改变它所需的行数。 –
@JohnClements,你可以定义__eq__和__lt__,你的对象可以使用'>,> =,<来比较。 <=,!='和'==' – lmiguelvargasf
请注意,您的Python代码有很多自定义行为的空间,并非所有类都需要每个类。另外,你只需要写十行。 – TigerhawkT3