Python: 创建具有两个以上可选参数的对象

Python: Creating an object with more than two optional arguments

class Disease:
  def __init__(self, category, name, nicknames, sx, *labs, **inheritance):
    self.category = category
    self.name = name
    self.nicknames = nicknames
    self.sx = sx
    self.labs = labs  #incl. vitals
    self.inheritance = inheritance
  def printLabs(self):
    for item in self.labs:
      print(item)

这工作正常,但是当我尝试使用三个可选值或中间的可选值(即昵称)初始化疾病时,它不起作用。

有什么办法解决这些问题吗?

要使值 有时 可选,您必须从 *labs**inheritance 中提取它,或者提供一个默认值,例如:

class Disease:
  def __init__(self, category, name, nicknames=None, sx=None, *labs, **inheritance):

现在,如果用户不提供昵称或 sx 的值,它们将保持为 None。

注意:像这样的可选(默认)参数 必须 位于函数声明的末尾 - 这意味着你不能做像 def __init__(self, category, name=None, nicknames, sx, *labs, **inheritance) 这样的事情因为在 name 之后,所有参数都必须有默认值,否则你会得到一个 SyntaxError.

要定义带有可选参数的 class,您应该为这些参数赋予初始值,初始值可以是 none 或整数或字符串或任何您想要的,以便 如果你想从 class 初始化一个实例而不给那些参数赋值它从父对象获取值 确保顺序参数位置参数排在第一位