gpt4 book ai didi

python - 在类中设置默认值

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:05 25 4
gpt4 key购买 nike

我正在用 Python 创建一个类,但我不确定如何正确设置默认值。我的目标是为所有类实例设置默认值,这些实例也可以通过类方法进行修改。但是,我希望在调用方法后恢复初始默认值。

我已经能够使用下面显示的代码使其工作。它不是很“漂亮”,所以我怀疑这是解决这个问题的更好方法。

class plots:
def __init__(self, **kwargs):
self.default_attr = {'a': 1, 'b': 2, 'c': 3}
self.default_attr.update(kwargs)
self.__dict__.update((k, v) for k, v in self.default_attr.items())

def method1(self, **kwargs):
self.__dict__.update((k, v) for k, v in kwargs.items())

#### Code for this method goes here

# Then restore initial default values
self.__dict__.update((k, v) for k, v in self.default_attr.items())

当我使用这个类时,我会做类似my_instance = plots()my_instance.method1(), my_instance.method1(b = 5 )my_instance.method1()。第三次调用 method1 时,如果我不在方法定义的末尾重置默认值,b 将为 5,但我希望它为 2再次。

注意:上面的代码只是一个例子。真实的类有几十个默认值,将它们全部用作输入参数将被视为反模式。

关于如何正确解决这个问题有什么建议吗?

最佳答案

您可以使用类变量 和属性来实现为所有类实例设置默认值的目标。可以直接修改实例值,调用方法后恢复初始默认值。

鉴于“真正的类有几十个默认值”的背景,你可以考虑的另一种方法是建立一个包含默认值的配置文件,并使用这个文件初始化或重置默认值。

这是第一种使用类变量的方法的简短示例:

class Plots:

_a = 1

def __init__(self):
self._a = None
self.reset_default_values()

def reset_default_values(self):
self._a = Plots._a

@property
def a(self):
return self._a

@a.setter
def a(self, value):
self._a = value


plot = Plots()
print(plot.a)

plot.a = 42
print(plot.a)

plot.reset_default_values()
print(plot.a)

输出:

1
42
1

关于python - 在类中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com