【发布时间】:2021-08-12 11:18:58
【问题描述】:
我有以下课程:
class car_class(object):
def __init__(self, mileage=11, tyre_size=11):
self.mileage = mileage
self.tyre_size = tyre_size
self.default_val = ''
def __hash__(self):
return hash((self.mileage, self.tyre_size))
def __getitem__(self, default_val):
return self.default_val
def __setitem__(self, default_val, mileage, tyre_size):
self[default_val] = str(mileage) + '_' + str(tyre_size)
def __eq__(self, other):
return (self.mileage, self.tyre_size) == (other.mileage, other.tyre_size)
def __str__(self):
return ('dict_cl: (tyre_size=\'%d\', mileage=\'%d\'' % (int(self.tyre_size), int(self.mileage)))
def __repr__(self):
return ('dict_cl: (tyre_size=\'%d\', mileage=\'%d\'' % (int(self.tyre_size), int(self.mileage)))
def __ne__(self, other):
# Not strictly necessary, but to avoid having both x==y and x!=y
# True at the same time
return not(self == other)
我还有一个字典,它把这个类的对象作为键值,如下所示-
my_dict = dict()
dict_value_list = list()
mm_dict_cl = car_class()
mm_dict_cl.mileage = 29
mm_dict_cl.tyre_size = 265
dict_value_list.extend(['car_color'])
my_dict.update(mm_dict_cl = dict_value_list)
因此字典(my_dict)键将类对象(mm_dict_cl)作为键,car_color 作为该键的值。 Key是类对象本身,有mileage和tyre_size两个属性。
现在,当我打印字典的以下值时,我得到的值为 car_color -
`>>>` print(my_dict[next(iter(my_dict))])
['car_color']
但是我正在努力寻找一种方法来检索类对象的属性。
>>>` print(next(iter(my_dict)))
mm_dict_cl
如果打印为字符串,则打印类名和键类型。
`>>>` print(type(next(iter(my_dict))))
<type 'str'>
查询:我如何才能访问密钥的对象属性? 我想使用字典 my_dict 的键检查特定“car_color”的 tyre_size 和 mileage 的值是多少 请帮助,这里是新手,正在尝试学习这种语言。
-edit:修复了对列表的扩展调用,以将“car_colour”添加为列表,而不是 SorousH Bakhtiary 指出的字符串。
【问题讨论】:
标签: python-3.x class dictionary oop