Python实例方法、静态方法、类方法
Python实例方法、类方法、静态方法区别
1. 实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
- 实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
- 静态方法,参数没有要求。
- 类方法,第一个参数必须要默认传类,一般习惯用cls。
class Foo(object):"""类三种方法语法形式"""def instance_method(self):print("是类{}的实例方法,只能被实例对象调用".format(Foo))@staticmethoddef static_method():print("是静态方法")@classmethoddef class_method(cls):print("是类方法")foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()# output
是类<class '__main__.Foo'>的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法
2. 类中静态方法方法调用静态方法的情况
下面的代码,静态方法调用另一个静态方法,如果改用类方法调用静态方法,可以让cls代替类,
让代码看起来精简一些。也防止类名修改了,不用在类定义中修改原来的类名。
# coding:utf-8class Foo(object):X = 1Y = 2@staticmethoddef averag(*mixes):return sum(mixes) / len(mixes)@staticmethoddef static_method():return Foo.averag(Foo.X, Foo.Y)@classmethoddef class_method(cls):return cls.averag(cls.X, cls.Y)foo = Foo()
print(foo.static_method())
print(foo.class_method())# output:
python
python and django
3. 继承类中的区别 从下面代码可以看出,如果子类继承父类的方法,子类覆盖了父类的静态方法
- 子类的实例继承了父类的static_method静态方法,调用该方法,还是调用的父类的方法和类属性。
- 子类的实例继承了父类的class_method类方法,调用该方法,调用的是子类的方法和子类的类属性。
class Father(object):X = 1Y = 2@staticmethoddef average(*mixes):return sum(mixes) / len(mixes)@staticmethoddef static_method():return Father.average(Father.X, Father.Y)@classmethoddef class_method(cls):return cls.average(cls.X, cls.Y)class Son(Father):X = 3Y = 5@staticmethoddef average(*mixes):return sum(mixes) / 3s = Son()
# 子类的实例继承了父类的static_method静态方法,调用该方法,还是调用的父类的方法和类属性。
print(s.static_method()) # (1+2)/2=1.5# 子类的实例继承了父类的class_method类方法,调用该方法,调用的是子类的方法和子类的类属性。
print(s.class_method()) # (3+5)/3=2.66666
# 1.5
# 2.6666666666666665
参考:https://zhuanlan.zhihu.com/p/21101992
Python实例方法、静态方法、类方法相关推荐
- python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...
本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...
- python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解
本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...
- python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...
Python 实例方法.类方法.静态方法的区别与作用 一.总结 一句话总结: 实例方法:第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可 ...
- python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...
这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...
- 类的实例方法静态方法类方法属性方法属性
目录: 分类 实例方法 静态方法 类方法 属性方法 属性 分类: 按照调用方式可以分为3种,实例方法.静态方法.和类方法 实例方法 实例方法只能通过实例对象调用,不能通过类进行调用.实例方法再定义时候 ...
- Python 实例方法、类方法、静态方法的区别与作用
Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...
- 针对Python 实例方法、类方法和静态方法的详解
1. 概览 先定义一个最简单的 Python 3 的类: class MyClass:def method(self):print('我是实例方法', self)@classmethoddef cla ...
- Python 实例方法、类方法和静态方法
在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆.本文通过代码例子来说明它们的区别. 实例方法 ...
- python 实例方法和类方法的区别_实例方法和类方法的区别 python
展开全部 有区别的,最主要的区别在于,定32313133353236313431303231363533e58685e5aeb931333363363433义类方法主要是要加一个装饰器,@classm ...
- python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
1.#类方法@classmethod,只能访问类变量,不能访问实例变量,通过cls参数传递当前类对象,不需要实例化,直接[类名.方法名()],可通过类对象和类对象实例访问 类方法:第一个参数强制为类对 ...
最新文章
- Oracle数据库日常维护知识总结
- Android DHCP 启动分析【2】
- 约会安排 (区间合并)毒瘤题
- OpenCV imwrite
- vue+element 封装公共js代码
- oracle有人用过fra吗,FRA(闪回恢复区)
- vue中 vue-router的路由的2种模式 (原生js模拟演示)
- webapp构建工具库
- 网站建设过程中的:重要页面、关键页面、过程页面、结果页面
- 邢台市初中计算机考试,2019年邢台中考总分多少分,邢台中考各个科目多少分
- 30 多个有内味道且笑死的人代码注释
- html上下两个箭头符号怎么打出来,往返双箭头符号怎么打
- Java带宽限速器、Springboot限速器
- 2009个人年度总结报告
- 【高级持续性威胁追踪】来自Mustang Panda的攻击? 我兔又背锅了!
- Travel(SPFA+思维)
- vijos 清点人数
- 树莓派操作及搭建frp实现内网穿透
- jsp中文传值到java乱码_jsp传递参数中文乱码解决办法
- php如何运行vbs文件,HTML_用vbs实现在启动 Windows 资源管理器时打开特定文件夹,my-script.vbs c:\scripts 在文件夹 - phpStudy...