Python 子类化和父值赋值

标签 python class flask

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

我正在学习使用 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/

相关文章:

python - 在 Python 中定义方法别名?

python - 将类的实例分解为列表,或 : a better way to sum class variables?

python - Azure 应用服务无法在嵌套文件夹中找到 Flask 应用程序。即使有 GUnicorn

javascript - 从我的网页访问 Flask 服务器

python - 在 Pygame 中画一条线

python - Python 2.5 中的 urllib 或 urllib2 是否支持 https?

python - 如何使用 python 在图形中添加标记,如下所示?

c++ - 如何初始化作为 c++11 中的类成员的静态 const vector ?

C++ 创建原始数组类

python - 使用 Flask 使用外部 XML API(带有模型等)