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 初始化一个实例而不给那些参数赋值它从父对象获取值
确保顺序参数位置参数排在第一位
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 初始化一个实例而不给那些参数赋值它从父对象获取值 确保顺序参数位置参数排在第一位