我想知道是否有人有任何好的方法可以快速解释如何高效地和 python 地创建带有可选参数的用户定义对象。 例如,我想创建这个对象:
class Object:
def __init__(self, some_other_object, i, *j, *k):
self.some_other_object = some_other_object
self.i = i
# If j is specified, assume it is = i
if(j==None):
self.j = i
else:
self.j = j
# If k is given, assume 0
if(k==None):
self.k = 0
else:
self.k = k
有更好的方法吗?
编辑:我更改了代码,使其更广泛、更容易理解。
最佳答案
您可以设置默认参数:
class OpticalTransition(object):
def __init__(self, chemical, i, j=None, k=0):
self.chemical = chemical
self.i = i
self.k = k
self.j = j if j is not None else i
如果您不使用j
和k
显式调用该类,您的实例将使用您在初始化参数中定义的默认值。因此,当您创建此对象的实例时,您可以正常使用所有四个参数:OpticalTransition('sodium', 5, 100, 27)
或者您可以使用默认值省略参数
OpticalTransition('sodium', 5)
,将被解释为 OpticalTransition('sodium', 5, None, 0)
您可以使用一些默认值,但不是全部,通过引用参数的名称:OpticalTransition('sodium', 5, k=27)
使用 j
的默认值但不是 k
的。
Python 不允许您将 j=i
作为默认参数(i
不是类定义可以看到的现有对象),因此self.j
行使用 if
语句处理此问题,实际上做同样的事情。
关于python - python类初始值设定项中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535655/