Python 当参数默认为None,但可能是str时,使用_repr_uu
我有一个可以用几个参数初始化的类。其中一些参数的默认值为None,但如果提供了值,则应为str。我希望从_repr_;中获得一个不错的pythonic输出,但不知道如何在一个return语句中处理None以及可能的str。我希望根据参数是None还是str值避免使用各种返回语句 一个基本的例子:Python 当参数默认为None,但可能是str时,使用_repr_uu,python,python-3.x,repr,Python,Python 3.x,Repr,我有一个可以用几个参数初始化的类。其中一些参数的默认值为None,但如果提供了值,则应为str。我希望从_repr_;中获得一个不错的pythonic输出,但不知道如何在一个return语句中处理None以及可能的str。我希望根据参数是None还是str值避免使用各种返回语句 一个基本的例子: class Demo: """Demo of how not to deal with None in __repr()__""" def __init__(self, w:int,
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')
请注意,单引号中没有,这不是我想要的。但是我和你在引号中,这是适当的,因为它们是str.在你的_repr_;函数中使用repr
测试:
在函数中使用repr
测试:
简单干净。非常感谢。简单干净。非常感谢。
def __repr__(self):
return f"demo(w={self.w}, x={self.x}, y={repr(self.y)}, z={repr(self.z)})"
d = Demo(23,12,y='hello')
print(d)
demo(w=23, x=12, y='hello', z=None)