python学习笔记:类的方法总结
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学习笔记:类的方法总结相关推荐
- Python学习笔记Task11.魔法方法
Python学习笔记Task11.魔法方法 魔法方法格式__init__ 1.基本 init(self[,-]) new(cls[,-]) del(self) str(self) repr(self) ...
- 小甲鱼Python学习笔记之魔法方法
什么是魔法方法 构造和析构 __init__方法 __new__方法 __del__方法 工厂函数 通过对魔法方法的重写,还可以自定义对象间的算术运算 反运算方法 实现一个计时器的类 time模块的l ...
- Python 学习笔记 类的封装 类的继承 多态继承 类方法和静态方法 单例设计模式
一.类的封装: 1.概念: 广义的封装:函数和类的定义本身,就是封装的体现 狭义的封装:一个类的某些属性,在使用的过程 中,不希望被外界直接访问,而是把这个属性给作为私有的[只有当前类持有],然后暴露 ...
- 廖雪峰Python学习笔记——类和实例
Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...
- Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]
✅ Blogger Learns Python is for learning the "Deep Learning". 文章目录 一.面向对象编程的简介 二.类与对象 -- 基础 ...
- python学习笔记——类
# coding='utf-8'class User():def __init__(self,name,sex):self.name = nameself.sex = sexprint '这里是构造函 ...
- python学习笔记之函数(方法)
def func(x):print 'x is', xx = 2print 'Changed local x to', xx = 50 func(x) print 'x is still', x 结果 ...
- python学习笔记——引号使用方法
添加链接描述 添加链接描述 添加链接描述 1.python的注释是用#号表示单行注释,多行注释时使用三个单引号或者三个双引号,实际上只有用#时才是真正的注释,解释器不会运行,否则解释器还是会运行的. ...
- Python学习笔记 (类与对象)
Python学习笔记 (类与对象) 1.类与对象 面向对象编程语言类: 一个模板, (人类)-是一个抽象的, 没有实体的对象: (eg: 张三, 李四) 属性: (表示这类东西的特征, 眼睛, 嘴巴, ...
最新文章
- Mogees将手势识别技术运用于新产品
- 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
- 应用下载店用户喜好分析
- js调试控制台使用详解图解
- Pat甲级 1001 A+B Format
- 光学字符识别 android,基于Android的光学字符识别研究与实现
- 开源素材网_22个用于广告素材的开源工具
- mysql linux32_linux 32 位mysql 安装中的问题 以及修改数据库密码
- mockito 多层调用_连续调用的Mockito迭代器样式存根
- 超级网际搜索(SuperSearch) - 3月30日最新版V5.1.28.94,内置140个搜索引擎
- 耗纸古文风之四--登高
- 使用matlab在图片上画框,并保存
- android开发便签实验报告,什么是艾宾浩斯遗忘曲线?利用这一记忆规律可以提升孩子记忆力...
- 管理变量、机密和事实
- C++ 数据结构与算法 (十一)(排序算法)
- windows7系统损坏修复_为什么有的win7开机没有修复计算机的选项?分享解决方法!...
- Python代码编译,py文件编译为pyc文件
- mybatis的insert语句获取自增id的方法(mySQL)
- 2k2实用球员_nba2kol2实用球员
- 安装好RStudio打开提示 Error Starting R 问题怎么解决?
热门文章
- 计算机吉祥如意制作贺卡作业,贺卡制作教案
- 2015搜狐新浪校招笔试题-12个物体天平称3次
- wordpress 数据库_在WordPress中使用数据库
- 百度大数据+零售发挥引擎优势 ------BDL ,大数据+亚当科茨领导的人工智能实验室和由张潼领导的大数据实验室
- Spring Boot进销存管理系统
- mac多开屏幕_Mac系统如何实现多屏显示画面?让Mac系统多屏显示画面的设置方法...
- 最大熵阈值python_李航统计学习方法(六)----逻辑斯谛回归与最大熵模型
- 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
- 带缓冲的输入/输入流
- VSTO中Word的查找方式