В Python, типы данных (например, INT, поплавок) и представляет ценность, но и имеют некоторые встроенные атрибуты/функция/и т.д.:Изменить представление объекта Python
In [1]: a = 1.2
In [2]: a
Out[2]: 1.2
In [3]: a.is_integer()
Out[3]: False
Можно ли воспроизвести это поведение в Python, например определить класс:
class Scalar:
def __init__(self, value)
self.value = value
# other code ....
s = Scalar(1.2)
, где я мог бы иметь s
возвращение 1,2 (вместо печатая s.value
), и делать такие вещи, как a = s
->a = 1.2
? Ближайший я могу добраться до такого поведения добавить что-то вроде:
def __getitem__(self, key=None):
return self.value
и используя a = s[()]
, но это выглядит не очень хорошо.
Возможный дубликат [Python property call (http://stackoverflow.com/questions/13029254/python-property-callable) – TigerhawkT3
В частности, см. фрагмент с классом 'WeirdInteger'. – TigerhawkT3
Это не общее решение, но вы можете сделать свой класс Scalar в вашем примере так, как вы хотите, просто подклассифицируя float (или int или любой другой скалярный тип, который вы хотели бы имитировать). 'class Scalar (float): pass; s = Scalar (1.2) ' –