【问题标题】:How do you initialize a class variable from a class variable?如何从类变量初始化类变量?
【发布时间】:2022-01-13 23:33:21
【问题描述】:

我想一次性初始化所有类数据,而不是在声明类之后。我意识到在定义期间无法访问类变量/方法。

为了能够基于类变量初始化变量,我已经完成了以下操作。我对此并不感到兴奋,但我还没有看到我喜欢的东西。

所以:

  1. 我所做的事情有什么缺点?
  2. 在定义之后初始化类的其余部分会更好吗?这对我来说看起来不对,但我是 python 新手,并且还在习惯它。
class foo:

    stuff=[1,3,5,7]

    @property
    def data(self):
        print('...init...')
        value = sum(self.stuff)
        setattr(foo, 'data', value)
        return value

    def __init__(self, x):
        self.x = x

f=foo(1)
g=foo(2)

print(f.data)
print(f.data)
print(g.data)

print()

print(f.x)
print(g.x)

输出

...init...
16
16
16

1
2

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以访问之前定义的类变量。

    class foo:
        stuff = [1, 3, 5, 7]
        data = sum(stuff)
    
        def __init__(self, x):
            self.x = x
    

    【讨论】:

    • 哭泣。这太容易了。从来没想过要在变量上不带前缀的情况下尝试。有没有办法调用类方法?我猜没有,因为没有可用于课程的“句柄”。
    • @kdubs 是的,由于您描述的原因,我相信这是不可能的。 stackoverflow.com/questions/11058686/…。你可以使用静态方法,但是这样做的代码有点笨拙stackoverflow.com/questions/41921255/…
    • 是的。我看到了一些。谢谢
    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2012-01-20
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多