如何在Python 3.x中为没有类属性名称的类创建设置器?

时间:2019-05-01 17:26:56

标签: python python-3.x

通常,我们使用属性名称为class属性设置一个值:

class Value:
        def __init__(self, value=None):
            self.value = value
        #setter definition  block
    >>>my_obj = Value()
    >>>my_obj.value = 10

但是我想在没有属性名称的情况下进行操作。 它应该像下面的代码一样工作:

class Value:
    def __init__(self, value=None):
        self.value = value
    #setter definition  block
>>>my_obj = Value()
>>>my_obj = 10
>>>print(myObj.value)
10

这意味着它不对名称为“ value”的属性使用名称。如果您为类Value()设置了任何值(10),那么将为名为Value.value的属性设置该值。

有可能吗?

1 个答案:

答案 0 :(得分:-1)

这是我在尝试回答您的问题时弄混的东西。我不确定为什么您要在类中设置某些东西而又不知道它是什么(对我来说似乎有点废话),所以也许您只想将类中的EVERYTHING设置为10。下面应该这样做:< / p>

class Value:
    def __init__(self, value=None):
        self.value = value


abc = Value()
print(abc.value) # prints None

for i in dir(abc):
    if(i[0] != '_'):
        exec("abc."+i+"=10")


print(abc.value) # prints 10

通过在类上使用dir(),您将获得该类中的所有方法和变量。如果使用简单的类定义,则所有预定义的方法和变量均以两个下划线开头,因此,通过删除这些下划线,我们可以访问您自己添加到类中的值,并使用exec()对其进行赋值。我不建议这样做