@andreyNN

Как получить изначальное значение аттрибута?

ответ a.__class__().health

например

class Some_class:
    self.health = 15

a= Some_class()
a.health=10

как в такой ситуации извлечь из экземпляра a изначальное значение health 15
a нельзя ломать. a.__init__() не подходит.
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
x67
@x67
print(Some_class.health)

При присвоении объекту a значения аттрибута, теряется связь с начальным значением и через объект a уже никак не получить, но зато еще можно через класс Some_class. Тут, правда, есть нюанс...
Пы.сы при объявлении статической переменной в классе, не нужно писать self
Self нужен внутри методов и является ссылкой на объект, чтобы можно было через эту ссылку взаимодействовать с ним внутри функции
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@programmeraxel
Например так если health динамический и значение хочется получать из экземпляра.

class SomeClass:
    def __init__(self, health=20):
        self._health = health
        self._init_health = self._health

    @property
    def health(self):
        return self._health

    @health.setter
    def health(self, value):
        self._health = value

    @property
    def init_health(self):
        return self._init_health


Либо так
class SomeClass:
    def __init__(self, health=20):
        self._health = health

import inspect
inspect.getargspec(SomeClass.__init__)

ArgSpec(args=['self', 'health'], varargs=None, keywords=None, defaults=(20,))


Но это не будет работать при хардкорном объявлении переменной как тут.

self.health = 15
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы