实例化方法便是我们最常见的第一个参数为self

类方法是在方法前加一个@classmethod装饰器

静态方法是在方法前加一个@staticmethod装饰器(PS:实例对象的权限最大。)

实例化方法

实例化方法就是类的示例能够使用的方法,比如下面这种print_name方法,它传入self这个类的实例:

那我们调用这个实例化方法的时候就必须实例化我们的对象来调用了:

可能会有疑问,为什么非要实例化呢,我传入的是self啊,跟我的类的实例有关系吗?其实我们传入的self就是类的示例,因此self并不是关键字,我们可以把self换成任意都能得到一样的结果:

结果依然是xiaoming!

因此,这就是实例化方法为什么要写self,并且一定要实例化对象才能调用!因为传入的self其实就是我们的实例化对象!

类方法:

与我们的实例化方法相比,类方法在方法的前面加了个classmethod关键字,并且传入的不是self

而是cls。

类方法使用的场景:

原则上,类方法是将类本身作为对象进行操作的方法。假设有个方法,且这个方法在逻辑上采用类本身作为对象来调用更合理,那么这个方法就可以定义为类方法。另外,如果需要继承,也可以定义为类方法。具体使用场景可见这篇博客:Python 实例方法、类方法、静态方法的区别与作用 - 失恋的蔷薇 - 博客园 (cnblogs.com)

而在调用上,类方法不需要实例化对象才能调用:

可以看到在第6行是Person.而不是Person().所以类方法不需要实例化!

静态方法:

静态方法,其实就是我们学过的函数,和函数唯一的区别是,静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。
静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此,类的静态方法中无法调用任何类属性和类方法。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。

比如:

可以看到,静态方法不需要传入任何参数,往往设置为一些与类无关的函数!

Python实例化方法、类方法、静态方法相关推荐

  1. Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法

    内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...

  2. python 实例化方法_Python中__new__()方法的使用和实例化

    new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ...

  3. Python的实例方法,类方法,静态方法之间的区别及调用关系

    如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是 ...

  4. python中类方法和静态方法的区别_python中静态方法和类方法的区别

    1.静态方法就是一个普通的方法,与类和对象无关 2.类方法就是JAVA里面的类方法,属于类,被各个对象共享 class OptSample(object): count = 0 def __init_ ...

  5. Python中类方法,静态方法,实例化方法

    ''' 静态方法 类方法 '''class Date:def __init__(self,year,month,day):self.year=yearself.month=monthself.day= ...

  6. 看似简单的问题 静态方法和实例化方法的区别

    这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简 ...

  7. 静态方法和实例化方法的区别 -转载

    这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简 ...

  8. 静态方法和实例化方法的本质区别

    本文章已收录于: 这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不 ...

  9. java 静态方法 实例化_java静态方法和实例化方法的区别(copy)

    [资料来源] 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以 ...

最新文章

  1. 2022-2028年中国BOPP消光膜行业全景调研及竞争格局预测报告
  2. HDU-2089-不要62
  3. 一个学渣三次面试阿里之路
  4. wegame饥荒一直连接中_腾讯WeGame注册用户超3亿 国产游戏销量超500万
  5. android 文字路径,Android自定义控件:路径及文字
  6. [转]Android中handler机制的原理
  7. Access-数据类型与.net OleDbType枚举类型对应关系
  8. 【渝粤题库】国家开放大学2021春2143西方经济学题目
  9. extend 对象继承
  10. php程序内存空间,php如何管理内存
  11. UITableViewStyleGrouped顶部留白问题
  12. (原创)C++ IOC框架
  13. 【Udacity笔记】What is Machine Learning?
  14. 2018大学计算机选择题题库,2018年9月计算机二级选择题题库(31-40)
  15. 按钮 加加加 减减减
  16. 软著申请模板,帮助了不少小伙伴少走弯路
  17. android ip查看工具,安卓手机查看IP地址的两种方法
  18. 网格背景教师公开课教学课件PPT模板
  19. Android native和h5混合开发几种常见的hybrid通信方式
  20. 宿主软件中文版含乐器包和插件包-AVID Pro Tools 10.3.10 Mac

热门文章

  1. WebService端口号修改
  2. 【timm】一个基于pytorch的图像模型库
  3. 工业互联网创新发展20问
  4. 老子《道德经》第五十章
  5. HUD -- 1533 Going Home(费用流基础题)
  6. java servlet网上求职招聘系统设计与实现+ppt+查重报告+安装视频+讲解视频+lw(已降重
  7. ESP32 Arduino http协议digest认证 接入海康威视摄像机
  8. 微信公众号支付的那些坑
  9. 绘制温度变化曲线《matplotlib学习篇》
  10. 应用计算机测定pn结,应用计算机测定PN结正向压降的温度特性