0
私はクラスNode
のオブジェクトを持っており、idで比較します。今私はまた、特別な意味のノード、SpecialNodeA
とSpecialNodeB
を持っています。彼らはどんなプロパティも持っていません、それらはその型/そのオブジェクトであることによって特別な意味を伝えます。 「マジックナンバー」と似た機能を持っているので、「マジックオブジェクト」と呼んでいます。「マジックナンバー」の意味での「マジックオブジェクト」を表現するPythonicの方法
以下のコメントで言われたように、私はそれ自身に等しいシングルトンのようなものを探しています。それは他の型と比較され、例外をスローするべきではなく、単にfalseを与えます。
私は現在、それを次のように実行します。
class Node:
def __eq_(self, other)
return (self.id == other.id)
class SpecialNodeA:
pass;
class SpecialNodeB:
pass;
spNoA = SpecialNodeA() #
spNoB = SpecialNodeB()
n1 = Node(id = 1)
specialNodeA1 = spNoA
specialNodeA2 = spNoA
specialNodeB1 = spNoB
specialNodeB2 = spNoB
print(n1 == specialNode1) # should return false
print(specialNodeA1 == specialNodeA2) # should return true
print(specialNodeA1 == specialNodeB2) # should return false
をそれが正常に動作しますが、そのような「魔法のオブジェクトを」実装する「より神託」方法は何ですか?
from enum import Enum
class SpecialNodes(Enum):
A = 1
B = 2
それとも、実際のノードをしたい場合:
それはあなたが求めて何不明です。 'SpecialNodeA'と' SpecialNodeB'が自分自身に等しいシングルトンと複数の 'Node'インスタンス(異なるIDを持つ)であるように思えますが、私は本当に分かりません。それは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)になりますか? –
これを質問に追加しましたが、コード例を考えるとかなり明確になるはずです。 – Michael