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

相关推荐
树獭叔叔几秒前
03-大模型的非线性变化:从MLP到MOE,大模型2/3的参数都在这里
后端·aigc·openai
开发者小天11 分钟前
python安装 Matplotlib 库 安装 Seaborn 库
开发语言·python·matplotlib
with-the-flow12 分钟前
从数学底层的底层原理来讲 random 的函数是怎么实现的
c语言·python·算法
iOS开发上架19 分钟前
系统架构-进程管理
python·腾讯云
多恩Stone21 分钟前
【3D-AICG 系列-15】Trellis 2 的 O-voxel Shape: Flexible Dual Grid 代码与论文对应
人工智能·python·算法·3d·aigc
短剑重铸之日32 分钟前
《Seata从入门到实战》第七章:seata总结
java·后端·seata
李云龙炮击平安线程1 小时前
Python中的接口、抽象基类和协议
开发语言·后端·python·面试·跳槽
深圳华秋电子1 小时前
靠谱的EDA AI助手生产厂家——华秋KiCad
人工智能·python
稻草猫.1 小时前
TCP与UDP:传输层协议深度解析
笔记·后端·网络协议
徐先生 @_@|||1 小时前
时间序列异常检测框架CrossAD论文阅读
经验分享·python·机器学习