python中属性是什么意思啊_python中的静态属性和方法是什么意思
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中的静态属性和方法是什么意思相关推荐
- python的类里的属性是否可以为列表_Python中如何获取类属性的列表
前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type ...
- python中属性是什么意思啊_python中的“对象属性”和一般属性是什么?
假设你有一个类Personclass Person: name = "Samuel" age = 50 country = "India" def method ...
- python之33个关键字详解_Python 中的关键字 with 详解
在 Python 2.5 中,with关键字被加入.它将常用的 try ... except ... finally ...模式很方便的被复用.看一个最经典的例子: with open('file.t ...
- python中字典和集合的区别_Python中字典和集合学习小结
映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...
- python中转义符的用法大全_Python中的各种转义符\n\r\t
Python中属性和描述符的简单使用 Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和 ...
- python中的pass是什么意思_Python中pass的作用与使用教程
Python中pass的作用与使用教程 Python中pass的作用 空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/java中: if(true) ; //d ...
- python中的header是什么意思_python中header是什么意思啊
python中的createheader什么意思 %-*s代表输入一个字符串,-号代表左对齐.后补空白,*号代表对齐宽度由输入时确定%*s代表输入一个字符串,右对齐.前补空白,*号代表对齐宽度由输入时 ...
- python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承
1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...
- python中sort函数是什么意思_python中sort和sorted函数
在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...
- python中下划线的5种含义_python中的下划线含义
单下划线和双下划线在Python变量和方法名称中都有含义.其中一些含义仅仅是按照惯例,作为给程序员的提示,而另外一些则由Python解释器执行. 在本文中,主要讨论以下五种下划线模式和命名约定,以及它 ...
最新文章
- 没有点真的大项目工程经验,你真以为能进大厂的算法岗?
- 三台机器之间root用户ssh互信配置
- [短彩信]C#短彩信模块开发设计(1)——架构
- python 加载与解析xml
- 三轴加速度传感器和六轴惯性传感器_美泰产品推介MSV3100A三轴加速度传感器
- 360浏览器怎么保存网页账号密码
- C++/OpenCV:同颜色检测提取
- 工程师们在摔倒后如何不尴尬
- Android-简单的图片验证码
- 索引 | 学堂原创推文汇总-v2
- 关于百万用户服务器架构能力(一)QQ游戏服务器架构
- 这100道Java面试题,面试不是什么难事了!
- 【鸿蒙热】下的冷思考
- Python基础之模块(Module)和包(Package)
- AI入门基础工具(一)
- 一个简单的GNS3拓扑结构(两台虚拟PC)
- 早安,娜娜。(全本完结)
- 基于鲲鹏云服务迁移技术和实践(鲲鹏生态)
- (翻译)峰终定律(Peak-end rule)
- [附源码]java毕业设计电子病历信息管理系统
热门文章
- idea output中文乱码解决办法
- 九个好习惯让你轻松理财
- 历史地理教室-数字化地理学科教室整体解决方案
- 8款最新超酷HTML5/CSS3特效及源码
- 红黑树、B树、234树
- 树莓派安装安装谷歌拼音输入法
- bmp qimage 保存位_Qt QImag图像保存、格式转换
- 解决centos8下安装docker提示“为 repo ‘docker-ce-stable‘ 下载元数据失败“的问题
- 盛世椿源为什么说余额宝有很大的危险?余额宝能跑赢通货膨胀吗?
- 在html中,书写多个连续的空格,但在页面中无效的问题