我來自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