我在执行的python脚本中从对象访问字段时遇到问题.基本上,它可以归结为以下几段代码:
from enum import Enum
class AbstractFoo:
def __init__(self, foo='works', bar='nope'):
self.foo = foo
self.bar = bar
class Foo(Enum):
test = AbstractFoo('bla', 'tada')
因此,当在python控制台中时,我尝试使用以下命令访问枚举的元素:
Foo.test.foo
我希望它能打印出“ bla”,这是我传递给构造函数的值(或者至少它应该打印出“ works”,这是我分配的默认值).
我真正得到的是
AttributeError: 'Foo' object has no attribute 'foo'
您可能现在可以知道我是python的新手,尤其是python中的概念对象(我主要用Java编写代码,这可能会导致我对python对象的行为产生误解).
但是我发现我可以做到:
Foo.test.foo = 'whatever'
并以此方式为foo赋值.但是在执行此操作时,我还可以为尚未在构造函数中指定的字段分配值,例如:
Foo.test.noField = 'shouldn't even exist'
它会和我完全不了解的一样好.
我将为澄清一些对象在python中的工作方式和/或如何实现python类的枚举感到非常高兴.
编辑:显然,如果我从枚举中删除继承,则代码将按照我想要的方式运行.