python中类的属性和方法介绍


Posted in Python onNovember 27, 2018

Python-类属性,实例属性,类方法,静态方法,实例方法

类属性和实例属性

#coding:utf-8
class Student(object):
  name = 'I am a class variable' #类变量
>>> s = Student() # 创建实例s
>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
Student
>>> print(Student.name) # 打印类的name属性
Student
>>> s.name = 'Michael' # 给实例绑定name属性
>>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
Michael
>>> print(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问
Student
>>> del s.name # 如果删除实例的name属性
>>> print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了
Student

类方法,实例方法,静态方法

实例方法,第一个参数必须要默认传实例对象,一般习惯用self。

静态方法,参数没有要求。

类方法,第一个参数必须要默认传类,一般习惯用cls。

# coding:utf-8
class Foo(object):
  """类三种方法语法形式"""
 
  def instance_method(self):
    print("是类{}的实例方法,只能被实例对象调用".format(Foo))
 
  @staticmethod
  def static_method():
    print("是静态方法")
 
  @classmethod
  def class_method(cls):
    print("是类方法")
 
foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()

运行结果:

是类<class '__main__.Foo'>的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法

类方法

由于python类中只能有一个初始化方法,不能按照不同的情况初始化类,类方法主要用于类用在定义多个构造函数的情况。
特别说明,静态方法也可以实现上面功能,当静态方法每次都要写上类的名字,不方便。

# coding:utf-8
class Book(object):
 
  def __init__(self, title):
    self.title = title
 
  @classmethod
  def class_method_create(cls, title):
    book = cls(title=title)
    return book
 
  @staticmethod
  def static_method_create(title):
    book= Book(title)
    return book
 
book1 = Book("use instance_method_create book instance")
book2 = Book.class_method_create("use class_method_create book instance")
book3 = Book.static_method_create("use static_method_create book instance")
print(book1.title)
print(book2.title)
print(book3.title)
Python 相关文章推荐
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
Python函数和模块的使用总结
May 20 Python
python占位符输入方式实例
May 27 Python
Python unittest生成测试报告过程解析
Sep 08 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 #Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 #Python
Django2.1.3 中间件使用详解
Nov 26 #Python
django+echart绘制曲线图的方法示例
Nov 26 #Python
详解配置Django的Celery异步之路踩坑
Nov 25 #Python
利用Python如何实现一个小说网站雏形
Nov 23 #Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 #Python
You might like
php session 检测和注销
2009/03/16 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
使用Python对MySQL数据操作
2017/04/06 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
通过代码实例了解Python异常本质
2020/09/16 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
关于期中考试的反思
2014/02/02 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
学习党史心得体会2016
2016/01/23 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
2019年最新借条范本!
2019/07/08 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL