Maya Python基础: 类属性 VS 实例属性、实例方法、类方法、静态方法

目录

[一 类属性 VS 实例属性](#一 类属性 VS 实例属性)

[二 实例方法、类方法、静态方法](#二 实例方法、类方法、静态方法)


一 类属性 VS 实例属性

类属性 实例属性
位置 类内部, 方法外部 **init**或其他方法内部
共享性 所有实例共享 每个实例独有
访问方式 类名.属性名 or 实例.属性名 实例.属性名
python 复制代码
class Software:
    #类属性
    VERSION = '1.0'
    LANGUAGE = 'Chinese'
    
    def __init__(self,name):
        #实例属性
        self.name = name 
        
class App(Software):
     pass
        
    
software = Software('好学英语软件')
#修改类属性可以影响所有实例
Software.VERSION='2.0'
print(software.name)
print(software.VERSION)

app = App('好学app')
#子类可以继承父类的类属性和实例属性
print(app.name)
print(app.VERSION)

二 实例方法、类方法、静态方法

类方法和静态方法是两种特殊的方法类型, 与普通的实例方法有所不同

方法 实例方法 类方法 静态方法
介绍 操作实例状态的方法 操作类状态的方法 与类和实例都无关的工具方法
使用场景 需要访问对象时 需要访问类的时候 不需要访问对象和类时
装饰器 @classmethod @staticmethod
第一个参数 self(实例本身) cls(类本身) 无特殊参数
访问权限 可访问实例属性和类属性 只能访问类属性 实例属性和类属性都不能访问
python 复制代码
class Banji:
    teacher = '张老师'
   
    #构造方法
    def __init__(self,class_name):
        self.class_name = class_name
    
    #实例方法:可访问实例属性和类属性
    def instance_method(self,student_numbers):
        print(self.teacher+'的班级'+self.class_name+f'有{student_numbers}名学生') 
        return self.class_name + f'{student_numbers}'
        
    #类方法:只能访问类属性 
    @classmethod
    def get_teacher(cls):
        print(cls.teacher)
       
    #静态方法:实例属性和类属性都不能访问
    @staticmethod     
    def meeting():
        print('班级开会了')
  
banji = Banji('三年四班')
banji.instance_method(40)
banji.get_teacher()
banji.meeting()
相关推荐
IT痴者28 分钟前
《PerfettoSQL 的通用查询模板》---Android-trace
android·开发语言·python
谅望者2 小时前
数据分析笔记14:Python文件操作
大数据·数据库·笔记·python·数据挖掘·数据分析
l1t2 小时前
调用python函数的不同方法效率对比测试
开发语言·数据库·python·sql·duckdb
2501_941111402 小时前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
今天吃饺子2 小时前
如何用MATLAB调用python实现深度学习?
开发语言·人工智能·python·深度学习·matlab
萧鼎2 小时前
Python Mahotas 图像处理库:高性能计算机视觉工具
图像处理·python·计算机视觉
破烂pan2 小时前
lmdeploy.pytorch 新模型支持代码修改
python·深度学习·llm·lmdeploy
麦麦大数据3 小时前
F047 vue3+flask微博舆情推荐可视化问答系统
python·flask·知识图谱·neo4j·推荐算法·舆情分析·舆情监测
MediaTea3 小时前
Python 第三方库:Flask(轻量级 Web 框架)
开发语言·前端·后端·python·flask