如何在python中将对象映射为整数?
我想要一个从MyObject类的对象到整数的映射。我读了一些东西,但什么都不懂,这似乎不是我想要的。散列函数 只能用于碰撞。我要做的是通过 将对象作为参数。基本上我寻找的是一个函数(用数学术语) 从MyObject到整数 假设这是我的类的定义:如何在python中将对象映射为整数?,python,oop,hash,dictionary,Python,Oop,Hash,Dictionary,我想要一个从MyObject类的对象到整数的映射。我读了一些东西,但什么都不懂,这似乎不是我想要的。散列函数 只能用于碰撞。我要做的是通过 将对象作为参数。基本上我寻找的是一个函数(用数学术语) 从MyObject到整数 假设这是我的类的定义: class MyObject: def __init__(self,number): self.name = name self.marked=False 比如说 a=MyObject("object 1") b
class MyObject:
def __init__(self,number):
self.name = name
self.marked=False
比如说
a=MyObject("object 1")
b=MyObject("object 2")
现在我想要一些像f这样的映射,我可以把25分配给a,把36分配给b。
并且能够得到:
f(a)=25
f(b)=36
这个怎么样:
id(myObj)
这将返回对象id(作为整数)
从您的编辑中,词典应满足您的要求:
# a and b are instances of your object
f = {}
f[a] = 25
f[b] = 36
然后您可以通过以下方式访问整数:
print f[a]
>>> 25
您似乎在谈论id()函数。从:返回对象的“标识”。这是一个整数(或长整数),保证该对象在其生存期内唯一且不变。生命周期不重叠的两个对象可能具有相同的id()值。我不完全理解你的问题。我的解释是,您希望使用对象来索引一些整数。如果这就是目的,您可以使用
dict
class MyClass:
# your code here
c1 = MyClass()
c2 = MyClass()
D = dict({c1:1,c2:2})
D[c1] # will return 1
D[c2] # will return 2
从您的问题来看,您似乎希望对象作为字典的键:
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
这就是你的意思吗
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
您不能以这种方式使用赋值运算符:“my_object_instance=number”,但您可以重载其他运算符,例如,“如果您想将对象映射到任何对象,请使用哈希表。为此,您需要哈希和相等方法。@larsmans我在哪里可以阅读和了解它?@Naji如果您想
f(a)
将成为25岁,您是在声明a=MyObject(25)
?还是将a
仍声明为a=MyObject(12)
?@想象不!对象有一个名称。但我还需要一个函数,如f,它将25分配给a,36分配给b,这是Nik设计的。无论如何,谢谢。当你想让对象b返回一些关于对象a的信息时,这是有意义的:)
class MyObject:
def __init__(self,name):
self.name = name
def __lshift__(self, num):
self.name = str(num)
def f(a):
return a
a = MyObject(100)
print(a.name)
f(a) << 10
print(a.name)