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

相关推荐
Blossom.1183 小时前
移动端部署噩梦终结者:动态稀疏视觉Transformer的量化实战
java·人工智能·python·深度学习·算法·机器学习·transformer
AiXed4 小时前
PC微信协议之AES-192-GCM算法
前端·数据库·python
灵光通码4 小时前
神经网络基本概念
python·神经网络
q***92516 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
m0_639817156 小时前
基于springboot火锅店管理系统【带源码和文档】
java·spring boot·后端
Petrichor_H_6 小时前
DAY 31 文件的规范拆分和写法
python
咚咚王者7 小时前
人工智能之编程进阶 Python高级:第九章 爬虫类模块
开发语言·python
会编程的林俊杰7 小时前
SpringBoot项目启动时的依赖处理
java·spring boot·后端
码事漫谈7 小时前
C++循环结构探微:深入理解while与do...while
后端
深蓝海拓7 小时前
使matplot显示支持中文和负号
开发语言·python