python中描述了什么?

2024-04-29 19:57:48 发布

您现在位置: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 

做什么属性描述(属性,字段)do?我在谷歌上查了一下,但什么也没找到。在


Tags: 代码namepyhttpsgithubmastercom属性
2条回答

它不是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设置为模型的描述。或者类似的事情。在

这不是python标准的东西。在

循环遍历一个类的名称和值,该类的属性(即Field类型的实例)被添加到字典中。在

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

相关问题 更多 >