Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义。

  1. class Foo(object):  def test(self)://定义了实例方法  print("object")  @classmethod  def test2(clss)://定义了类方法  print("class")  @staticmethod  def test3()://定义了静态方法  print("static")
  • 实例方法访问方式:

(1)ff.test();//通过实例调用

(2)Foo.test(ff)//直接通过类的方式调用,但是需要自己传递实例引用

  • 类方法访问方式:

(3)Foo.test2();

如果Foo有了子类并且子类覆盖了这个类方法,最终调用会调用子类的方法并传递的是子类的类对象。

  1. class Foo2(Foo):  @classmethod  def test2(self):  print(self)  print("foo2 object")
    f2=Foo2()
    print(f2.test2())

(3)输出结果:

<class '__main__.Foo2'>
foo2 object
  • 静态方法调用方式:

静态方法就跟普通的Java静态方式一样

ff=Foo();<pre name="code" class="python">ff.test3();//使用实例调用
Foo.test3();//直接静态方式调用
  • 总结

其实通过以上可以看出:

实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python 3可以传递任意对象,其他版本会报错)。

三种方法从不同层次上来对方法进行了描述:实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

转载于:https://blog.51cto.com/lmtz001/1441333

@staticmethod 和@classmethod 方法相关推荐

  1. python staticmethod and classmethod方法

    静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用.没有隐性参数. 实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数. #h ...

  2. python classmethod 的cls_Python中的@staticmethod,@classmethod,self,cls到底是什么意思?...

    普通类方法 在Python中,通常我们调用某个类的方式,首先要实例化一个对象才能调用该类的方法,比如: # _*_ coding:utf-8 _*_ class People: def hello(s ...

  3. python 类不实例化方法:@staticmethod或@classmethod

    讲解一 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码, ...

  4. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

    python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用(3-20181205) 文章目录: 一. @staticmetho ...

  5. python @staticmethod和@classmethod的作用

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...

  6. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数

    python 中的static-method (静态函数), classmethod(类函数 ), 成员函数 简介 类似Java.CPP中的类,可以定义static method.class meth ...

  7. @staticmethod和@classmethod的作用与区别

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...

  8. python的类方法_python 类不实例化,调用类方法:@staticmethod 和 @classmethod

    @staticmethod 和 @classmethod 用法 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要 ...

  9. Python基础——@staticmethod与@classmethod

    @staticmethod与隐式的静态成员方法的区别在于是否允许实例对象调用该静态方法(后者是不允许的) @staticmethod与@classmethod的区别在于后者无论是被实例调用还是被类对象 ...

最新文章

  1. 博士毕业后就被双一流高校直聘为教授,这位90后“土博”是怎么做到的?
  2. java通过spring获取配置文件_springboot获取properties文件的配置内容(转载)
  3. 端午小长假--前端基础学起来02与浏览器交互,表单标签
  4. mysql指令按顺序排列_mysql基本语法大全
  5. 微信小程序商城,微信小程序微店,长期维护版本
  6. 面向对象(Python):学习笔记之面向对象基础
  7. 电信公网ip和内网ip的区别_私有IP共有IP和弹性IP的区别
  8. 综合能源管理服务认证是什么 , 综合能源服务认证有什么要求?
  9. 虚假唤醒spurious wakeup
  10. 2020 年 9 月程序员平均工资 14469 元,你拖后腿了没?
  11. nodejs mysql 耗硬盘_nodejs操作MySQL其实很简单
  12. 百里挑一:ICLR 2021杰出论文奖出炉!
  13. SQL Server Transact-SQL编程/存储过程/触发器
  14. 这3款免费的Word转PDF转换器软件,建议收藏使用
  15. 玩游戏提升计算机内存不足,电脑内存不足怎么办?详细解决方案.
  16. 项目提测CheckList通用版
  17. 基于VHDL的具有自动乐曲演奏功能的电子琴设计
  18. 用STC仿真器点亮开发板的灯(第一次用单片机)
  19. 2017年网易实习程序员面试题
  20. 那些年一起追过的日漫之留下的经典台词

热门文章

  1. Does LGWR use synchronous IO even AIO enabled?
  2. javascript行内脚本小小探讨
  3. 通用图片加载组件UniversalImageLoader
  4. 如何吸收分数c语言,用C语言编程平均分数
  5. c++ swap函数头文件_C++函数模板(泛型编程)
  6. 海洋分享皮肤_最稀有的军需皮肤,外号第一代身法套,如今都进了素材包
  7. HTML做frame跳转设置响应头,X-Frame-Options header响应头如何配置
  8. 基于深度学习网络的运动想象BCI系统及其应用
  9. 苹果电脑+VR头显不久将成为现实,macOS新系统正式上线
  10. 软件工程学完java后干_软件工程学习后的一些体会--------两周