获得名为`foo`的财产

时间:2016-02-14 19:11:15

标签: python properties

我有

class A:

    foo = 'f'
    baa = 'b'

    @property
    def foo(self):
        return self.foo

    @property
    def baa(self):
        return self.baa

我想制作这个程序:

get(myclass, prop):

获取该类的属性。 例如a = A()get(a, 'foo')给了我fa = 2gets(a, 'imag')给了我0

2 个答案:

答案 0 :(得分:3)

内置版本称为getattr

您还需要以不同方式调用属性和变量:

您无法使用getattr

访问媒体资源
class A:
    def __init__(self):
        self._foo = 'f'
        self._bar = 'b'

    @property
    def foo(self):
        return self._foo

    @property
    def bar(self):
        return self._bar

a = A()
print(a.foo)
print(getattr(a, '_foo'))

答案 1 :(得分:0)

如@MaxNoe所述,您想要的方法是getattr()。但是,如果您只想使用get(),则可以为其创建别名。显然也适用于类实例。

#accepts class name (c) and attribute (attr)
def get(c,attr):
    #returns the attribute
    return getattr(c,attr)

烧瓶使用(强制性?)

from flask import Flask
app=Flask(__name__)

@app.route("/")
def get(c,attr):
    return getattr(c,attr)