gpt4 book ai didi

Python 子类化和父值赋值

转载 作者:行者123 更新时间:2023-12-02 03:31:56 25 4
gpt4 key购买 nike

如果主题不准确,我深表歉意,我不知道如何表达它。

我正在学习使用 Python 类(class)。我创建了一个我希望能够子类化的类。问题是类的某些部分依赖于类中设置的变量,并且这些部分默认为空值(目的是在子类化时定义它们)。例如:

配置.py:

class Config(object):
VAR1 = ''
if VAR1 == 'somevalue':
VAR2 = VAR1 + 'something'
else:
VAR2 = VAR1

子类.py:

from config import Config
class Production(Config):
VAR1 = 'value1'

这里的问题是 VAR2 没有获取子类 VAR1。我明白为什么这不能按我想要的方式工作,我的问题是:是否可以这样做(或以类似的方式)?如果是的话,怎么办?

更新:

我找到了一种方法,但它仍然需要比我想要的更多的输入 - 下面的函数的变化很小,并且基于 Config 时显式设置的变量被子类化。因此,最好根据子类的上下文(Config 被子类化时的 VAL1 的值)自动设置这些值(来自父类的 VAL2),而不是必须显式设置它们。

配置.py:

class Config(object)
VAR1 = ''
VAR2 = ''

def set_var2(val):
if val == 'somevalue':
VAR2 = val + 'value2'
else:
VAR2 = 'value2'

return VAR2

子类.py:

from config import Config, set_var2
class Production(Config):
VAR1 = 'value1'
VAR2 = set_var2(VAL1)

最佳答案

我认为您想要的是访问一个属性(即,obj.foo)并让它执行最后一刻的计算。这样,您就可以评估定义原始类后可能发生的任何子类化的结果。

这就是 @property 装饰器的用途 - 将代码隐藏在属性名称后面。请参阅this answer of mine举个例子。

关于Python 子类化和父值赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931346/

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