Python 的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。

类方法和静态方法的区别在于,Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参数名为 cls)会自动绑定到类

本身;但对于静态方法则不会自动绑定。

推荐:Python教程

使用 @classmethod 修饰的方法就是类方法;使用 @staticmethod 修饰的方法就是静态方法。

下面代码示范了定义类方法和静态方法:class Bird:

# classmethod修饰的方法是类方法

@classmethod

def fly (cls):

print('类方法fly: ', cls)

# staticmethod修饰的方法是静态方法

@staticmethod

def info (p):

print('静态方法info: ', p)

# 调用类方法,Bird类会自动绑定到第一个参数

Bird.fly()  #①

# 调用静态方法,不会自动绑定,因此程序必须手动绑定第一个参数

Bird.info('crazyit')

# 创建Bird对象

b = Bird()

# 使用对象调用fly()类方法,其实依然还是使用类调用,

# 因此第一个参数依然被自动绑定到Bird类

b.fly()  #②

# 使用对象调用info()静态方法,其实依然还是使用类调用,

# 因此程序必须为第一个参数执行绑定

b.info('fkit')

从上面粗体字代码可以看出,使用 @classmethod 修饰的方法是类方法,该类方法定义了一个 cls 参数,该参数会被自动绑定到 Bird 类

本身,不管程序是使用类还是对象调用该方法,Python 始终都会将类方法的第一个参数绑定到类本身,如 ① 号、② 号代码的执行效

果。

上面程序还使用 @staticmethod 定义了一个静态方法,程序同样既可使用类调用静态方法,也可使用对象调用静态方法,不管用哪种方

式调用,Python 都不会为静态方法执行自动绑定。

在使用 Python 编程时,一般不需要使用类方法或静态方法,程序完全可以使用函数来代替类方法或静态方法。但是在特殊的场景(比如

使用工厂模式)下,类方法或静态方法也是不错的选择。

更多技术请关注云海天Python教程。

python中属性是什么意思啊_python中的静态属性和方法是什么意思相关推荐

  1. python的类里的属性是否可以为列表_Python中如何获取类属性的列表

    前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type ...

  2. python中属性是什么意思啊_python中的“对象属性”和一般属性是什么?

    假设你有一个类Personclass Person: name = "Samuel" age = 50 country = "India" def method ...

  3. python之33个关键字详解_Python 中的关键字 with 详解

    在 Python 2.5 中,with关键字被加入.它将常用的 try ... except ... finally ...模式很方便的被复用.看一个最经典的例子: with open('file.t ...

  4. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  5. python中转义符的用法大全_Python中的各种转义符\n\r\t

    Python中属性和描述符的简单使用 Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和 ...

  6. python中的pass是什么意思_Python中pass的作用与使用教程

    Python中pass的作用与使用教程 Python中pass的作用 空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/java中: if(true) ; //d ...

  7. python中的header是什么意思_python中header是什么意思啊

    python中的createheader什么意思 %-*s代表输入一个字符串,-号代表左对齐.后补空白,*号代表对齐宽度由输入时确定%*s代表输入一个字符串,右对齐.前补空白,*号代表对齐宽度由输入时 ...

  8. python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承

    1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...

  9. python中sort函数是什么意思_python中sort和sorted函数

    在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...

  10. python中下划线的5种含义_python中的下划线含义

    单下划线和双下划线在Python变量和方法名称中都有含义.其中一些含义仅仅是按照惯例,作为给程序员的提示,而另外一些则由Python解释器执行. 在本文中,主要讨论以下五种下划线模式和命名约定,以及它 ...

最新文章

  1. 没有点真的大项目工程经验,你真以为能进大厂的算法岗?
  2. 三台机器之间root用户ssh互信配置
  3. [短彩信]C#短彩信模块开发设计(1)——架构
  4. python 加载与解析xml
  5. 三轴加速度传感器和六轴惯性传感器_美泰产品推介MSV3100A三轴加速度传感器
  6. 360浏览器怎么保存网页账号密码
  7. C++/OpenCV:同颜色检测提取
  8. 工程师们在摔倒后如何不尴尬
  9. Android-简单的图片验证码
  10. 索引 | 学堂原创推文汇总-v2
  11. 关于百万用户服务器架构能力(一)QQ游戏服务器架构
  12. 这100道Java面试题,面试不是什么难事了!
  13. 【鸿蒙热】下的冷思考
  14. Python基础之模块(Module)和包(Package)
  15. AI入门基础工具(一)
  16. 一个简单的GNS3拓扑结构(两台虚拟PC)
  17. 早安,娜娜。(全本完结)
  18. 基于鲲鹏云服务迁移技术和实践(鲲鹏生态)
  19. (翻译)峰终定律(Peak-end rule)
  20. [附源码]java毕业设计电子病历信息管理系统

热门文章

  1. idea output中文乱码解决办法
  2. 九个好习惯让你轻松理财
  3. 历史地理教室-数字化地理学科教室整体解决方案
  4. 8款最新超酷HTML5/CSS3特效及源码
  5. 红黑树、B树、234树
  6. 树莓派安装安装谷歌拼音输入法
  7. bmp qimage 保存位_Qt QImag图像保存、格式转换
  8. 解决centos8下安装docker提示“为 repo ‘docker-ce-stable‘ 下载元数据失败“的问题
  9. 盛世椿源为什么说余额宝有很大的危险?余额宝能跑赢通货膨胀吗?
  10. 在html中,书写多个连续的空格,但在页面中无效的问题