我正在处理一个项目,如果我们可以根据其唯一实例识别类属性,它将使我更容易编码。 示例
class MyClass:
def __init__(self, unique_id):
self.unique_id = unique_id
以后
class1 = MyClass(1)
class2 = MyClass(2)
如果
,是否可以将对象class1作为输出output = instance whose unique_id == 1
答案 0 :(得分:1)
你可以保留一个实例的字典:
class MyClass:
_instances = {}
def __init__(self, unique_id):
self.unique_id = unique_id
self._instances[unique_id] = self
@classmethod
def instance_by_id(cls, id):
return cls._instances[id]
a = MyClass(1)
b = MyClass(2)
c = MyClass.instance_by_id(1)
print(c)
print(a)
#<__main__.MyClass object at 0x7fa9dd0bfbe0>
#<__main__.MyClass object at 0x7fa9dd0bfbe0>
答案 1 :(得分:1)
选项A:
如果您计划以连续方式添加ID,则可以将它们全部输入到列表中:
class_list = []
class_list.append(MyClass(1))
class_list.append(MyClass(2))
然后使用
获取它们class_list[index]
选项B:
如果你不连续去找他们,你可以做以下事情
class_dict = {}
class_dict{"some_id"} = MyClass("some_id")
class_dict{"some_id2"} = MyClass("some_id2")
然后访问如下:
class_dict["some_id"]
选项C - 首选:
我个人会推荐以下内容:
class MyClass:
static_dict = {}
def __init__(self, unique_id):
self.unique_id = unique_id
MyClass.static_dict[unique_id] = self
def get_class_by_id(unique_id):
return static_dict[unique_id]
然后你可以访问如下:
MyClass.get_class_by_id("some_id")