У меня есть класс, который можно инициализировать несколькими параметрами.Некоторые из этих параметров имеют значения по умолчанию None
, но если указано значение, оно должно быть str
.Я хотел бы получить хороший питонический вывод из __repr()__
, но не могу понять, как обрабатывать None
, а также возможный str
в одном операторе возврата.Я хотел бы избежать использования различных операторов возврата в зависимости от того, является ли параметр None
или str
значением.
Базовый пример:
class Demo:
"""Demo of how not to deal with None in __repr()__"""
def __init__(self, w:int, x:int, y=None, z=None):
self.w = w
self.x = x
self.y = y
self.z = z
def __repr__(self):
return f"demo(w={self.w}, x={self.x}, y='{self.y}', z='{self.z}')"
Вот два примера использования этого класса:
>>> d1 = Demo(5, 4)
>>> d1
Demo(w=5, x=4, y='None', z='None')
>>> d2 = Demo(5, 4, 'me', 'you')
>>> d2
Demo(w=5, x=4, y='me', z='you')
Обратите внимание, что None
в одинарных кавычках, что нечто я хочу.Но me
и you
заключены в кавычки, что уместно, учитывая, что они str
.