Как я могу дать переменные пользовательские метаданные? - PullRequest
0 голосов
/ 15 мая 2018

Кроме объявления переменной как нового объекта, есть ли способ, которым я мог бы применить дополнительную информацию к переменной python, к которой я мог бы позже обратиться?

someVar = ... # any variable type
someVar.timeCreated = "dd/mm/yy"
# or
someVar.highestValue = someValue
# then later
if someVar.timeCreated == x:
    ...
# or 
if someVar == someVar.highestValue:
    ...

Я вижу, что это, по сути, просто объект, но есть ли изящный способ сделать это без объявления объекта, отдельного от самого объекта-переменной python?

1 Ответ

0 голосов
/ 15 мая 2018

Экземпляры пользовательских классов (классов, определенных в исходном коде Python) позволяют вам добавлять любые атрибуты, которые вы хотите (если они не имеют __slots__).Большинство встроенных типов, таких как str, int, list, dict, не имеют.Но вы можете разделить их на подклассы, а затем сможете добавлять атрибуты, и все остальное будет вести себя нормально.

class AttributeInt(int):
    pass

x = AttributeInt(3)

x.thing = 'hello'

print(x)  # 3
print(x.thing)  # hello
print(x + 2)  # 5 (this is no longer an AttributeInt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...