Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当参数默认为None,但可能是str时,使用_repr_uu_Python_Python 3.x_Repr - Fatal编程技术网

Python 当参数默认为None,但可能是str时,使用_repr_uu

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,

我有一个可以用几个参数初始化的类。其中一些参数的默认值为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, 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)