Типы возвращаемых классов Python - PullRequest
1 голос
/ 04 ноября 2019

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

class Constant():
def __init__(self, value):
    self.__value = value
PI = Constant(3.14)

Есть ли способ вернуть ему 3.14 (как фактическийfloat не строка) без явного определения метода __float__ и вызова float(PI). Я хочу иметь возможность просто что-то сказать в соответствии с print(PI*2) и получить 6.28 в качестве результата

РЕДАКТИРОВАТЬ: я нашел то, что хотел, используя метод __new__, я могу изменитьвернуть значение из экземпляра во все, что я хочу.

2-е РЕДАКТИРОВАНИЕ: оказывается, это не сработало.

Ответы [ 2 ]

3 голосов
/ 04 ноября 2019

Попробуйте создать подклассы float:

class Constant(float):
    def __init__(self, value):
        self.__value = value
PI = Constant(3.14)
print(PI*2)

Вывод:

6.28
0 голосов
/ 04 ноября 2019

Попробуйте это для доступа к закрытой переменной

class Constant():
    def __init__(self, value):
        self.__value = value

PI = Constant(3.14)
print(PI._Constant__value*2)

6.28
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...