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()
相关推荐
Huyuejia19 小时前
rag+agent主程序
python
jay神19 小时前
基于 YOLOv8 的PCB 缺陷检测系统
python·深度学习·yolo·目标检测·信息可视化·毕业设计
zhaoshuzhaoshu20 小时前
设计模式之行为型设计模式详解
python·设计模式
不知名XL20 小时前
day01 agent开发基础铺垫
python
-To be number.wan20 小时前
Python爬取百度指数保姆级教程
爬虫·python
hnxaoli20 小时前
win10小程序(十八)剪切板循环粘贴
python·小程序
APIshop20 小时前
Java获取淘宝商品价格、图片与视频:淘宝开放平台API实战指南
开发语言·python
唐叔在学习21 小时前
Python移动端应用消息提醒开发实践
开发语言·python
好家伙VCC21 小时前
**发散创新:基于Python与OpenCV的视频流帧级分析实战**在当前人工智能与计算机视觉飞速发展的背景下
java·人工智能·python·计算机视觉