python中类内的传递和访问参数使用*args
我有一个类,在这个类中,我使用*args在init函数中传递变量。 这些参数必须是user、url和user_key,我必须对传递的参数进行一些输入验证python中类内的传递和访问参数使用*args,python,Python,我有一个类,在这个类中,我使用*args在init函数中传递变量。 这些参数必须是user、url和user_key,我必须对传递的参数进行一些输入验证 def __init__(self, *args): """init method for the class.""" print args if args[0] is not None: self.user = user print(self.user) if args[1] i
def __init__(self, *args):
"""init method for the class."""
print args
if args[0] is not None:
self.user = user
print(self.user)
if args[1] is not None:
self.url = url
print(self.url)
if args[2] is not None:
self.user_key = user_key
print(self.user_key)
但是当我试图打印这些值时,它们不会被打印出来。
是否有其他方法访问这些变量?
我得到下面的错误
self.user = user
NameError: global name 'user' is not defined
您正在对None进行检查您正在打印它们,您应该检查值是否不等于None,并且您正在打印未固定变量
用户
,而不是将self.user
分配给参数[索引]
:
此外,如果未提供参数,则应添加try和catch:
def __init__(self, *args):
"""init method for the class."""
print args
try:
if args[0] is not None:
self.user = args[0]
print(self.user)
except IndexError:
print('No arguments provided')
如果需要将关键字参数传递给函数,请改用类似于
**kwargs
的参数,然后传递给函数且未被命名关键字参数捕获的所有关键字参数将存储在名为kwargs
的dict中。因此,如果您需要访问参数user
,只需使用kwargs['user']
def __init__(self, **kwargs):
"""init method for the class."""
print(kwargs)
if 'user' in kwargs:
self.user = kwargs['user']
print(self.user)
if 'urlin' kwargs:
self.url = kwargs['url']
print(self.url)
if 'user_keyin' kwargs:
self.user_key = kwargs['user_key']
print(self.user_key)
如果您已经知道有多少个参数以及它们应该代表什么,那么为什么要使用
*args
?您可以只分配默认值None
value@poobear如果kwargs:NameError:全局名称“user”中的用户未定义,则应在args[0]中传递该值这是我得到的错误