django中的类属性和类方法

django中直接定义类的属性,可以直接在实例化对象或者类中调用。

类属性:version_number是一个类属性,在所有实例之间共享。它在类加载时就被初始化。

class Book:

version_number = "1.0.0"

def init(self, title, author):

self.title = title

self.author = author

@classmethod

def get_version(cls):

return cls.version_number

使用类方法

print(Book.get_version()) # 输出: 1.0.0

什么时候需要类方法(@classmethod):

1、如果你需要定义一个方法,它需要访问类级别的数据(如类属性);

2、定义类方法,就是可以其他的这个类以外的方法也可以调用

3、如果你需要定义一个方法,需要在方法中使用 cls 来创建类的实例

4、执行其他与类相关的操作,那么你应该使用 @classmethod。

class Book:

version_number = "1.0.0"

def init(self, title, author):

self.title = title

self.author = author

@classmethod

def get_version(cls):

return cls.version_number

使用类方法

print(Book.get_version()) # 输出: 1.0.0

这个例子中,get_version 是一个类方法,通过 @classmethod 装饰器声明,允许你访问类属性 version_number。如果你的需求是类似的,那么你就需要使用类方法。否则,如果只是需要在类定义时执行某个函数并将结果存储为类属性,不需要将其定义为类方法。

相关推荐
nelsontang1 分钟前
Prometheus High Cardinality(高基数)问题完全指南
后端
IT_陈寒27 分钟前
Vite凭什么比Webpack快10倍?5个核心优化原理大揭秘
前端·人工智能·后端
怕浪猫1 小时前
第22章:项目实战与进阶优化——从开发到部署的完整旅程
后端·go·编程语言
摸鱼的春哥1 小时前
你适合养龙虾🦞吗?4类人不适合2类适合
前端·javascript·后端
Moment1 小时前
Agent 开发本质上就是高级点的 CRUD
前端·后端·面试
stark张宇2 小时前
避坑指南:Windows 用户安装 OpenClaw 的正确姿势,拒绝失败率 100%
人工智能·后端·llm
程序员爱钓鱼3 小时前
Go错误处理全解析:errors包实战与最佳实践
前端·后端·go
巫山老妖11 小时前
从零开发一个掘金自动发布 Skill,并上架 Clawhub
后端
曲幽11 小时前
FastAPI + PostgreSQL 实战:从入门到不踩坑,一次讲透
python·sql·postgresql·fastapi·web·postgres·db·asyncpg
颜酱11 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法