gpt4 book ai didi

python - 如何在Python中获取少于所需数量的位置参数?

转载 作者:行者123 更新时间:2023-11-30 23:03:40 24 4
gpt4 key购买 nike

我正在用 python 测试一个程序的框架,该程序评估以 (hh, mm, ss, zz) 形式给出的时间,其中 hh 是小时,mm 是分钟,ss 是秒,zz 是与 UTC 的差值。基本上,对于 init 函数,我希望能够评估控制台中的输入并传递它们,无论它们是否具有正确数量的位置参数。这是我的代码:

class Time(object):
def __init__(self, hh, mm, ss, zz):
'''takes initial time values'''
pass

目前,程序将使用适当数量的变量输入控制台,如下所示:

A = times.Time(1, 2, 3, 4)

但是会给出 TypeError,init() 缺少所需的位置参数,其中:

B = times.Time(1,2,3)
C = times.Time(1,2)

有办法让这些通过吗?

最佳答案

您可以更改函数的签名以使用“默认参数”(通常也称为“关键字参数”)...

def __init__(self, hh=None, mm=None, ss=None, zz=None):

这将用 None 值替换未指定的值。

<小时/>

如果无法修改签名,可以使用inspect:

import inspect
def pad_args(func, *my_args):
spec = inspect.getargspec(func)
missing_count = len(spec.args) - len(my_args)
args = my_args + (None,)*missing_count
return func(*args)

你可以像这样使用它:

C = pad_args(times.Time, 1, 2)

当然,您在这里的里程可能不会让您走得太远 - 大多数带有位置参数的函数都无法任意接受 None 值。通常,库的作者将这些参数设置为位置参数,因为函数/对象需要它们才能按预期工作。

关于python - 如何在Python中获取少于所需数量的位置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com