Python学习笔记【week03day2上】self,类变量,成员变量,动态属性&方法,成员方法,类方法,静态方法

本文详细介绍了Python中的self、类变量、成员变量、动态属性和方法,以及类方法和静态方法。强调self并非关键字,但在实例化对象时代表对象自身。类变量和成员变量的区别在于定义位置、访问方式及内存出现时机,成员方法、类方法和静态方法则分别适用于不同的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

self,类变量,成员变量,动态属性&方法,成员方法,类方法,静态方法

self加粗样式

  1. self代表什么?
    是当前类的实例【对象自己本身】

  2. self是否为关键字?
    self并不是关键字,可以使用别的变量名来代替,但是self是我们约定俗成的写法,不建议使用其他的名字。

  3. self可否省略?
    self不能省略,并且它必须写在参数列表中第一个位置,声明的必须的要声明,传递参数的时候不需要我们手动传参。

  4. 使用“self.属性名 = 属性名”将属性绑定为成员变量

类变量

定义在类中,并且定义在函数体之外的变量,我们称之为类变量【静态成员变量】
类变量通常情况不使用对象来进行调用,而是使用类名来进行调用,类变量在整个实例化对象的过程中是公用的。

类变量的调用:
类名.变量名
注意:若使用对象来进行调用也不报错,但是一般不建议这么使用。

成员变量

只作用于当前实例,定义在函数中并且绑定self

类变量与成员变量的区别:

  1. 定义位置不同
  2. 访问方式不同
    类变量使用类名【使用对象访问不报错】
    成员变量使用对象来访问 【使用类名来访问的时候会报错】
  3. 在内存出现的时机不同
    类变量随着类的加载而出现,成员变量实例化对象的时候创建
  4. 调用的优先级不同,当使用对象来调用类变量与成员变量的时候,优先选择成员变量,若成员变量不存在,则去访问类变量
  5. 通过对象来更改类变量的值的时候,更改的是当前对象的值【只会影响当前对象】,通过类名来更改类变量的值的时候,更改类变量的初始值。
    【会影响在类变量更改之后创建的所有对象】

动态属性&方法

  • 动态数据类型语言的灵活性:创建类的实例之后,我们可以给该类的实例
    绑定任意的属性以及方法。

  • 在python中,我们可以使用__slots__ 变量来限制我们动态添加的属性以及方法。

  • 注意slots =() 的值为一个元组,元组中使用字符串进行声明可以动态添加
    的属性以及函数的函数名。只作用于当前类的实例

      class Student:
      	__slots__ = ("name","age","eat")
    
      def __init__(self,name,age):
      	self.name = name
      	self.age = age
    
      #class外部的函数
      def eat():
      	print("吃饭")
    
      if __name__ == '__main__':
      	stu = Student("张三",20)
      	print(stu.name)
      	#动态绑定函数
      	stu.eat = eat
    

类中的函数/方法分为三大类

  1. 成员方法
    一般情况下在类中定义所有的方法我们都称之为成员方法,在成员方法中,它的第一个参数
    self,声明的时候必须声明在参数列表中第一个位置,使用对象来进行调用的时候,对象会
    将自己作为参数自动传递给self,不需要我们手动传递。
    成员方法是给对象准备的,调用的时候必须使用对象来进行调用

  2. 类方法
    类方法是专门给类准备的方法,它不是绑定在对象身上,而是绑定在类身上的方法,在声明类方法的时候我们通常情况下使用@classmethod装饰器来进行声明。
    在类方法中,参数列表的第一个位置的参数是cls,代表类本身,使用类名来进行调用的
    时候类会将自己作为参数自动传递进来,不需要手动传递。
    调用类方法的时候建议使用类名来进行调用,若使用对象来进行调用也不报错,
    但是会让别人造成误解。

  3. 静态方法
    就是一类普通的方法,但是写在了类中。声明静态方法的时候使用@staticmethod
    来进行声明,调用的时候建议使用类名来进行调用,若使用对象来进行调用也不报错。

简而言之
成员方法:只能实例调用。使用到self
类方法:没有使用self @classmethod def xxx(cls)
静态方法:没有使用成员变量,也没有使用类变量(但可以使用类方法外部传参)常用于“打印说明”
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值