Python 中这些数据的技术术语是什么?

时间:2021-01-18 16:05:37

标签: python class

我正在审查一些代码并查看一些类。在类中(例如类 ResourceBaseSchema),项目 id、private、canRead、canWrite、owner 等的技术术语是什么...我想了解更多关于它们的信息,但我不确定要搜索什么。< /p>

到目前为止,我对类的经验只涵盖了属性,这些属性往往采用 self.attribute 的形式。

谢谢

import json
from requests import Request
from pydantic import BaseModel
from pydoc import locate
from typing import List, Optional
import dataclasses
from dataclasses import dataclass
from datetime import datetime

SCHEMAS = {}

class ResourceBaseSchema(BaseModel):
    id: Optional[str]
    private: Optional[bool]
    canRead: Optional[List[str]]
    canWrite: Optional[List[str]]
    owner: Optional[str]
    anonymousComments: Optional[bool]
    comments: Optional[List[str]]
    createdAt: Optional[str]
    updatedAt: Optional[str]

2 个答案:

答案 0 :(得分:1)

这些是类属性。无论从 class 创建的对象如何,它们都存在。在 __init__ 方法或其他方法中以 self.attribute 形式定义的属性是对象属性。仅当从 class 创建对象并且它们属于该特定对象时,它们才存在。

在实际使用中,您可以从未像这样实例化的类引用访问类属性

class.attribute 

注意该类尚未实例化,即 class()

这是另一个例子:

class test:
    class_attribute = 1
    
    def __init__(self):
        self.object_attribute = 2

# Accessing class attribute
a = test.class_attribute

# Accessing object attribute
b = test().object_attribute
python 中的

self是指class的实例。所以它只在实例化时可用。

答案 1 :(得分:1)

它们是类属性(又名 class variables),但更具体地说,它们是字段。请参阅Pydantic docs

<块引用>
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name = 'Jane Doe'

User 这里是一个包含两个字段的模型,id 是一个整数并且是必需的,而 name 是一个字符串并且不是必需的(它有一个默认值)。

这类似于标准库中的数据类:

<块引用>

dataclass() 装饰器检查类以查找 fieldfield 被定义为具有 type annotation 的类变量。