Представление экземпляра класса к чему-то кроме строки
Я не смог найти ответ на этот вопрос, но, возможно, я задавал его неправильно или не знаю правильных ключевых слов. Так....
Как я могу вызвать пользовательский экземпляр класса и заставить его возвращать что-то, кроме тарабарщины, а также что-то кроме строки?
Например, если я создаю список mylist = [1,2,3,4,5]
а затем введите "mylist" в командную строку, он возвращает список, который я создал
mylist
Out[16]: [1, 2, 3, 4, 5]
То же самое верно и для других аспектов Python, таких как датафрейм
a = pd.DataFrame()
a
Out[18]:
Empty DataFrame
Columns: []
Index: []
Как у меня что-то подобное происходит с пользовательским классом? Примерно так: вызов экземпляра класса возвращает один из его определяющих атрибутов или что-то подобное (кроме строки). Возможно ли это (или типичная практика?) Вместо возвращения
<__main__.MyClass at stuff>
Спасибо за ответы!
1 ответ
Используйте специальные методы __str__
а также __repr__
:
class A:
def __str__(self):
# if __str__ isn't defined, it will default to __repr__
return 'A description for print'
def __repr__(self):
return 'This description will appear in the REPL'
Пример:
>>> a = A()
>>> a
This description will appear in the REPL
>>> print(a)
A description for print
>>>