Rya*_*yan 0 python arguments function
假设您有一个Python类,其构造函数如下所示:
def __init__(self,fname=None,data=[],imobj=None,height=0,width=0):
Run Code Online (Sandbox Code Playgroud)
并且您想要创建它的实例但只提供fname和imobj输入.这样做的正确方法是否正确?
thing = Thing(f_name, None, im_obj, None, None)
Run Code Online (Sandbox Code Playgroud)
还是有一种打电话的首选方式?
你可以这样做:
thing = Thing(f_name=value1, im_obj=value2)
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下您实际上并不需要,f_name=因为它fname是第一个参数(此外self,它是隐式传递的).你可以这样做:
thing = Thing(value1, im_obj=value2)
Run Code Online (Sandbox Code Playgroud)
但我个人认为第一种解决方案更具可读性.它清楚地表明,我们只是更改其值f_name并将im_obj其他所有参数保留为默认值.此外,它使人们不知道value1将分配什么参数.
此外,您几乎从不希望将诸如列表之类的可变对象作为默认参数.它将在函数的所有调用中共享.有关更多信息,请参阅"最小惊讶"和可变默认参数
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |