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

相关推荐
狗头大军之江苏分军16 小时前
她在结婚那天离开了:我们该重新谈谈“结婚这件事”
前端·后端
幽影相随16 小时前
TensorBoard 快速使用指南
pytorch·python·tensorboard
上将邢道荣16 小时前
MCP学习笔记
后端
王中阳Go16 小时前
🚀 RAG 系统检索不准?是时候引入「离线精排」思维了!
后端·面试
雨中飘荡的记忆16 小时前
深入理解 Guava EventBus:让你的系统解耦更优雅
java·后端
其美杰布-富贵-李16 小时前
TensorBoard 与 WandB 在 PyTorch Lightning 中的完整指南
人工智能·pytorch·python·监控·调优
Python永远的神16 小时前
告别循环:Python 列表推导式,让你的代码飞起来!
python
Vic1010116 小时前
Spring AOP 高级陷阱:为什么 @Before 修改参数是“伪修改“?
java·python·spring
武子康16 小时前
大数据-195 KNN/K近邻算法实战:欧氏距离+投票机制手写实现,含可视化与调参要点
大数据·后端·机器学习