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。如果你的需求是类似的,那么你就需要使用类方法。否则,如果只是需要在类定义时执行某个函数并将结果存储为类属性,不需要将其定义为类方法。

相关推荐
曲幽2 分钟前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
神奇小汤圆15 分钟前
Spring让Java慢了30倍,JIT、AOT等让Java比Python快13倍,比C慢17%
后端
颜酱29 分钟前
单调栈:从模板到实战
javascript·后端·算法
神奇小汤圆39 分钟前
支付成功订单却没了?MyBatis连接池的坑我踩了
后端
雨中飘荡的记忆3 小时前
OpenClaw:开源AI助手平台的革命之路
后端
程序员鱼皮3 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
用户298698530143 小时前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
爱分享的鱼鱼3 小时前
Spring Boot服务中添加字段的完整指南
后端
掘金者阿豪3 小时前
数据库选型的“第三维度”:为什么我们开始重新思考技术栈的底层逻辑
后端
SelectDB3 小时前
Doris & SelectDB for AI 实操:从零搭建非结构化数据智能分析洞察系统
后端