@Tiran_94
Python Django

Как отловить аргумент метода через __init__?

Стало интересно как отловить передачу аргумента через __init__ или что то другое. К примеру:
class MyD:
    def __init__(self):
        print('старт')
        self.d('цветочки')


    def __del__(self):
        print("конец")

    def d(self, p):
        print(p)

x = MyD()
x.d("моя")


Вывод:
старт
цветочки
моя
конец

что бы в данном случае отловить строку "моя" и заменить ее "цветочки" .
Заранее спасибо)
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
@iSergios
Python-разработчик
Вы хотите получить метод, который вне зависимости от переданных ему аргументов будет обрабатывать только какой-то один? Ну да это не сложно же. Никто ж вас не обязывает работать именно с переданным аргументом.
class MyD:
    __secretarg= 'цветочки'
    def __init__(self):
        print('старт')
        self.d(self.__secretarg)

    def __del__(self):
        print('конец')

    def d(self, p):
        if p!= self.__secretarg:
            pass #вот и отловили. здесь какое-то действие
        print(self.__secretarg) #тут все равно наш агрумент
Ответ написан
Комментировать
@fireSparrow
Отлов переменных, переданных как аргумент метода правильнее всего сделать в самом методе.
Тут никакой особенной магии не нужно.

А чтобы регулировать доступ к аттрибутам класса, смотрите в сторону магических методов __setattr__ и __getattribute__

Подробнее про них можно почитать здесь:
https://habrahabr.ru/post/186608/#access
По этой же ссылке и про другие магические методы много полезного написано.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы