我正在制作一个面向对象的文本冒险引擎代码,我的主要目标是使其用户友好,但功能强大。代码中的一个类目前需要15个参数。但是,在类的每个实例中,实际上只定义了少数参数,其中许多参数最终都留空了。
为了创建更简洁的代码,并使使用引擎的体验更加用户友好,我想知道是否有任何方法可以使类中的某些参数可选填写。这样做的目的是,当您创建所述类的实例时,您只需要为该特定实例定义所需的参数,而不必将所有其他参数定义为无值。
换句话说,我想知道这是否可行:
class sampleClass:
def __init__(self, arg1, optional1)
self.arg1 = arg1
self.optional1 = optional1
var = sampleClass(value)
var = sampleClass(value2, value3)
在上述情况下,可以定义“optional1”变量,也可以将其留空。
我也查看了这个网站上* args和** kwargs的帖子,在我看来,两个参数都可以采用多个值,但是没有一个可以选择不采用任何值。
总之,是否可以在python类中拥有完全可选的参数,可以定义或留空并且不会产生错误消息?
另外,对不起我在这篇文章中所做的任何错误。这是我关于Stack Overflow的第一个问题,所以我是网站的新手。请告诉我,如果有什么我可以提出来提出更好的问题。
答案 0 :(得分:2)
类init方法与任何其他函数相同,其参数默认为None。
def __init__(self, arg1, optional1=None):
答案 1 :(得分:1)
我也查看了这个网站上* args和** kwargs的帖子,在我看来,两个参数都可以采用多个值,但是没有一个可以选择不采用任何值。
这不正确。
>>> def f(*args, **kwargs):
... print("Args: %r" % (args,))
... print("Kwargs: %r" % (kwargs,))
...
>>> f()
Args: ()
Kwargs: {}
答案 2 :(得分:0)
试试这个: Use of *args and **kwargs
** kwargs允许您将keyworded变量长度的参数传递给函数。如果要在函数中处理命名参数,则应使用** kwargs。
def manyArgs(*arg):
print("Was called with ", len(arg), " arguments: ", arg)
def main():
manyArgs()
if __name__ == "__main__":
main()
如果我在没有任何参数的情况下运行它,则会打印以下行:
Was called with 0 arguments: ()