Переопределение атрибута класса с функцией с тем же именем в Python - PullRequest
0 голосов
/ 22 марта 2020

У меня интересный сценарий. У меня есть базовый класс, который имеет атрибут (контекст). Я хочу создать экземпляр дочернего класса из данного базового класса, а затем обновить атрибут.

Обычно это можно сделать с помощью свойства getter и setter. Тем не менее, я пытаюсь сохранить дочерний класс настолько чистым, насколько это возможно, так как он будет использоваться в рамках. Поэтому я не хочу использовать метод получения и установки в дочернем классе. Вместо этого я могу создать атрибут и функцию с тем же именем. Это позволяет мне определять атрибут с помощью функции, но также обновлять атрибут позже. Это похоже на достижение результатов, которые я ищу. Однако мне любопытно, считается ли это плохой практикой или будут ли какие-либо непредвиденные последствия.

class Base:
    def __init__(self, task_name):
        self.name = task_name
        self.context = self.context()

    def context(self):
        return None


class ChildClass(Base):

    def context(self):
        return {
            'test': 90,
            'test1': 9000,
        }

    def run(self):
        print(self.context)


child_class = ChildClass('test')
child_class.context = 'updated values'

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