python - python类初始值设定项中的可选参数

标签 python

我想知道是否有人有任何好的方法可以快速解释如何高效地和 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

如果您不使用jk 显式调用该类,您的实例将使用您在初始化参数中定义的默认值。因此,当您创建此对象的实例时,您可以正常使用所有四个参数: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/

相关文章:

python - 大数据多处理

python - 可以在Python的日期时间模块上仅指定年份吗?

python - 如何在 Flask 中将 login_required 与类一起使用?

python:列表理解策略

python - 无法使用请求从相同的网址收集个人资料名称

python - 如何加速Python中集合字典的交集

python - 如何将压缩的(gz)CSV 文件读入 dask Dataframe?

python - Mac OS Pygame 使用已弃用的函数 CGSFlushWindow

python - 一个用SQLAlchemy做的图形化界面的应用程序源码怎么编排?

python - 在类中的函数调用中传入 "self"作为参数 (Python)