2

MyObject というクラスのオブジェクトから整数へのマップが必要です。私はここでいくつかのものを読みましたが、何も理解していませんでした.それは私が望むものではないようです. ハッシュ関数はコリジョンにのみ使用できます。私がやりたいことは、オブジェクトを引数として与えることによって値(整数)を取得することです。基本的に私が探しているのは、MyObject から整数への関数 (数学用語で) です。

したがって、これが私のクラスの定義であるとします。

class MyObject:
    def __init__(self,number):
        self.name = name
        self.marked=False

たとえば

a=MyObject("object 1")
b=MyObject("object 2")

ここで、a に 25、b に 36 を割り当てることができる、f のようなマッピングが必要です。そして得ることができる:

f(a)=25
f(b)=36
4

6 に答える 6

1

あなたの質問から、オブジェクトを辞書のキーとして使用したいようです:

d = {a: 25, b: 36}
assert d[a] == 25

しかし、オブジェクトに数値を直接格納できるため、これはあまり意味がありません。

class MyObject:
    def __init__(self, name, number):
        self.name = name
        self.number = number

a = MyObject("a", 25)
b = MyObject("b", 36)

代わりに、番号をオブジェクトに関連付ける必要があるのではないでしょうか?

d = {25: a, 36: b}
assert d[25] == a
于 2013-06-21T20:17:03.760 に答える
1

あなたは id() 関数について話しているようです。マニュアルより: オブジェクトの「アイデンティティ」を返します。これは、このオブジェクトの有効期間中に一意で一定であることが保証されている整数 (または長整数) です。有効期間が重複しない 2 つのオブジェクトは、同じ id() 値を持つ場合があります。

于 2013-06-21T20:10:44.473 に答える
0

これはどう:

id(myObj)

これは、オブジェクト ID を (整数として) 返す必要があります。

あなたの編集から、辞書はあなたが望むことをするはずです:

# a and b are instances of your object
f = {}
f[a] = 25
f[b] = 36

次に、整数に次のようにアクセスできます。

print f[a]
>>> 25
于 2013-06-21T20:10:42.097 に答える
0

これはあなたが意味するものですか?

class MyObject:
    def __init__(self,name):
        self.name = name
        self.number = None

a = MyObject("a")
a.number = 25

f = lambda x : x.number
print f(a) #prints 25
于 2013-06-21T20:19:08.290 に答える