python中类的方法总结

在python中,类的方法有如下三种:
(1)实例方法(即:对象方法)
(2)类方法
(3)静态方法
下面,将对这三种方法进行总结。

1、实例方法(对象方法)

通常情况下,类中的方法默认是实例方法,在定义的时候不需要使用使用特殊的关键字进行标识。

基本知识

对于实例方法,我们需要了解以下的基本知识:

(1)实例方法至少有一个参数,默认该参数的名字为“self”(也可以是其他的),若有其他参数,可以跟在该参数后面

(2)实例方法有两种调用方式:

第一种:通过实例对象调用,该方法不需要手动传递实例参数,编译器在后期加载的时候会把实例p加载至实例参数,具体参见代码示例

第二种:通过类名称调用,该方法需要手动传递实例参数,具体参见代码示例

注意: 从上面的两种调用方法我们可以知道,实例方法被调用时要向它的第一个参数传递实例对象。

代码

#实例方法代码
class Student:name="jom"age=21#实例方法有两个参数的情况,其中self为默认参数,需要向它传递实例对象,str为字符串类型,由用户在调用时自行添加def instanceshow(self,str):print(self,self.name,self.age,str)p=Student()
print("输出实例p:")
print(p)
print("输出类名称Student:")
print(Student)
print("使用实例对象调用的结果:")
p.instanceshow("实例对象调用")print("使用类名称调用的结果:")
Student.instanceshow(p,"类名称调用")

2、类方法

基本知识

(1)类方法要使用装饰器@classmethod来修饰,一般情况,第一参数默认命名为cls(cls=class,可以是别的名字)

(2)类方法有两种调用方式:

第一种:使用类的名称调用,参见代码示例

第二种:使用实例调用,参见代码

注意: 从以上的两种调用方式,我们需要知道,类方法调用的时候,会向他的第一个参数传递类的名称

代码

#类方法代码
class Student:name="jom"age=21@classmethoddef classshow(cls,str):print(cls,cls.name,cls.age,str)p=Student()
print("输出实例p:")
print(p)
print("输出类名称Student:")
print(Student)
print("使用实例调用的结果:")
p.classshow("实例调用")
print("使用类名称调用的结果:")
Student.classshow("类名称调用")

3、静态方法

静态方法,和我们之前在其他语言中学到的静态函数时很相似的,去呗就在于,静态方法,定义在类的命名空间中,而函数定义在全局命名空间中。

基本知识

(1)静态函数通过装饰器@staticmethod修饰

(2)静态函数的调用有以下两种方式:

第一种:实例调用,参见代码

第二种:类名称调用,参见代码

静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此,类的静态方法中无法调用任何类属性和类方法。

注意: 我们需要知道在调用静态函数时不会向函数传递任何特殊参数,在上面的实例方法和类方法中都有自己的特殊参数,用来和类或者对象进行捆绑使用,而静态方法是没有的。虽然它没有参数,但是不意味着它没有参数,它也是可以拥有普通参数的,比如字符串类型。

代码

#静态方法代码
class Student:name="jom"age=21@staticmethod#str是普通参数,非特殊参数,没有和其他类或者对象进行捆绑def staticshow(str):print(Student,Student.name,Student.age,str)p=Student()
print("输出实例p:")
print(p)
print("输出类名称Student:")
print(Student)
print("使用实例调用的结果:")
p.staticshow("实例调用")print("使用类名称调用的结果:")
Student.staticshow("类名称调用")

类的方法归总

对于以上三种类的方法,我们需要知道以下几点:

  • 实例方法(对象方法):随着实例属性的改变而改变
  • 类方法:类属性的值,不随实例属性的变化而变化
  • 静态方法:不可以访问类属性,直接输出传入方法的值

下面我们将实例方法,类方法和静态方法放在同一个代码中,进行对比。

class Student:name="jom"age=21@staticmethod#str是普通参数,非特殊参数,没有和其他类或者对象进行捆绑def staticshow():print(Student.name,Student.age)@classmethoddef classshow(cls):print(cls.name, cls.age)def instanceshow(self):print(self.name, self.age)s=Student()
print("使用静态方法:")
s.staticshow()
# s.age=11
# print("修改age后再次使用静态方法:")
# s.staticshow()p=Student()
print("使用类方法:")
p.classshow()
p.name="tom"
print("修改name后再次使用类方法:")
p.classshow()q=Student()
print("使用实例方法:")
q.instanceshow()
q.name="alen"
print("修改name后再次使用实例方法:")
q.instanceshow()

python学习笔记:类的方法总结相关推荐

  1. Python学习笔记Task11.魔法方法

    Python学习笔记Task11.魔法方法 魔法方法格式__init__ 1.基本 init(self[,-]) new(cls[,-]) del(self) str(self) repr(self) ...

  2. 小甲鱼Python学习笔记之魔法方法

    什么是魔法方法 构造和析构 __init__方法 __new__方法 __del__方法 工厂函数 通过对魔法方法的重写,还可以自定义对象间的算术运算 反运算方法 实现一个计时器的类 time模块的l ...

  3. Python 学习笔记 类的封装 类的继承 多态继承 类方法和静态方法 单例设计模式

    一.类的封装: 1.概念: 广义的封装:函数和类的定义本身,就是封装的体现 狭义的封装:一个类的某些属性,在使用的过程 中,不希望被外界直接访问,而是把这个属性给作为私有的[只有当前类持有],然后暴露 ...

  4. 廖雪峰Python学习笔记——类和实例

    Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...

  5. Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]

    ✅ Blogger Learns Python is for learning the "Deep Learning". 文章目录 一.面向对象编程的简介 二.类与对象 -- 基础 ...

  6. python学习笔记——类

    # coding='utf-8'class User():def __init__(self,name,sex):self.name = nameself.sex = sexprint '这里是构造函 ...

  7. python学习笔记之函数(方法)

    def func(x):print 'x is', xx = 2print 'Changed local x to', xx = 50 func(x) print 'x is still', x 结果 ...

  8. python学习笔记——引号使用方法

    添加链接描述 添加链接描述 添加链接描述 1.python的注释是用#号表示单行注释,多行注释时使用三个单引号或者三个双引号,实际上只有用#时才是真正的注释,解释器不会运行,否则解释器还是会运行的. ...

  9. Python学习笔记 (类与对象)

    Python学习笔记 (类与对象) 1.类与对象 面向对象编程语言类: 一个模板, (人类)-是一个抽象的, 没有实体的对象: (eg: 张三, 李四) 属性: (表示这类东西的特征, 眼睛, 嘴巴, ...

最新文章

  1. Mogees将手势识别技术运用于新产品
  2. 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
  3. 应用下载店用户喜好分析
  4. js调试控制台使用详解图解
  5. Pat甲级 1001 A+B Format
  6. 光学字符识别 android,基于Android的光学字符识别研究与实现
  7. 开源素材网_22个用于广告素材的开源工具
  8. mysql linux32_linux 32 位mysql 安装中的问题 以及修改数据库密码
  9. mockito 多层调用_连续调用的Mockito迭代器样式存根
  10. 超级网际搜索(SuperSearch) - 3月30日最新版V5.1.28.94,内置140个搜索引擎
  11. 耗纸古文风之四--登高
  12. 使用matlab在图片上画框,并保存
  13. android开发便签实验报告,什么是艾宾浩斯遗忘曲线?利用这一记忆规律可以提升孩子记忆力...
  14. 管理变量、机密和事实
  15. C++ 数据结构与算法 (十一)(排序算法)
  16. windows7系统损坏修复_为什么有的win7开机没有修复计算机的选项?分享解决方法!...
  17. Python代码编译,py文件编译为pyc文件
  18. mybatis的insert语句获取自增id的方法(mySQL)
  19. 2k2实用球员_nba2kol2实用球员
  20. 安装好RStudio打开提示 Error Starting R 问题怎么解决?

热门文章

  1. 计算机吉祥如意制作贺卡作业,贺卡制作教案
  2. 2015搜狐新浪校招笔试题-12个物体天平称3次
  3. wordpress 数据库_在WordPress中使用数据库
  4. 百度大数据+零售发挥引擎优势 ------BDL ,大数据+亚当科茨领导的人工智能实验室和由张潼领导的大数据实验室
  5. Spring Boot进销存管理系统
  6. mac多开屏幕_Mac系统如何实现多屏显示画面?让Mac系统多屏显示画面的设置方法...
  7. 最大熵阈值python_李航统计学习方法(六)----逻辑斯谛回归与最大熵模型
  8. 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
  9. 带缓冲的输入/输入流
  10. VSTO中Word的查找方式