描述在python中做了什么?

时间:2013-10-28 14:56:03

标签: python

我正在浏览https://github.com/hit9/CURD.py/blob/master/CURD.py的代码,这是一个执行正常curd操作的简单orm ..我无法理解这样的部分代码(第616行):

 .....#smthing #..
 for name, attr in cls.__dict__.iteritems():
            if isinstance(attr, Field):
                attr.describe(name, cls)
                fields[name] = attr 

attr.describe(attr,Field)做什么?我用Google搜索但没有找到任何内容。

2 个答案:

答案 0 :(得分:5)

它不是Python语言功能,它是该库的一种方法。你可以在这里看到定义:

https://github.com/hit9/CURD.py/blob/master/CURD.py#L251

class Field(Leaf):
    """
    Field object.

    Field examples: User.name, User.age ..
    """

    def __init__(self, is_primarykey=False, is_foreignkey=False):
        self.is_primarykey = is_primarykey
        self.is_foreignkey = is_foreignkey

    # describe model's attr
    def describe(self, name, model):
        self.name = name
        self.model = model
        # fullname e.g. : User.id 's fullname is "user.id"
        self.fullname = self.model.table_name + "." + self.name
        # describe the attribute, reload its access control of writing, reading
        setattr(model, name, FieldDescriptor(self))

setattr设置对象的属性。因此,如果我致电describe("field_name", myObject),它会将myObject.field_name设置为模型的描述。或类似的东西。

答案 1 :(得分:2)

这不是蟒蛇标准的东西。

循环遍历类的名称和值,并且作为Field类型实例的该类的属性被添加到字典中。

Field不是python标准库的一部分,您应该在该项目中搜索Field类。