使用Python反射性地获取字段名称

dea*_*mon 3 python reflection

是否有可能在Python(3.2)中反映出一个字段的名称?

请参阅以下示例:

class Something:
    def __init__(self):
        self.x = 1

    def validate():
        return validator.max(self.x, 10)
Run Code Online (Sandbox Code Playgroud)

validator.max(self.x, 10)应该生成一个错误消息,其中包含字段名称x作为字符串(在本例中"x").

Joh*_*ooy 5

您必须将属性名称作为字符串传递

def validate():
    return validator.max(self, "x", 10)
Run Code Online (Sandbox Code Playgroud)

那么validator.max可能看起来像这样

def max(ob, attr, max_value):
    val = getattr(ob, attr)    # val would be self.x now
    ...
Run Code Online (Sandbox Code Playgroud)