Я хотел бы изменить атрибут __str__()
одного из методов класса .
(Примечание. Не путать с "попыткой изменить метод __str__()
".)
У меня есть класс MyClass, у которого есть метод 'some_method'. Я могу изменить способ отображения MyClass:
class MyClass():
def __init__(self): pass
def some_method(self): pass
def __str__(self): return "I'm an instance of MyClass!"
Когда я создаю экземпляр и печатаю MyClass:
print(my_class)
Я получаю:
I'm an instance of MyClass!
Когда я
print(my_class.some_method)
Я получаю:
<bound method my_class.some_method of <gumble margle object at mumble-jumble>>
Вместо этого я хотел бы видеть:
some_method in the instance my_class you Dope!
Я попытался переопределить метод str some_method
:
def some_method(self):
def __str__(self):
return "You dope!"
Но нет любви.
Попытка принудительного перенаправления в IPython оказалась не лучше:
my_class.some_method.__str__ = lambda: "You Dope!"
дал
AttributeError: 'method' object attribute '__str__' is read-only
Есть ли простой способ сделать это программно (желательно в Python 3)?