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 相关文章推荐
python使用scrapy解析js示例
Jan 23 Python
进一步探究Python的装饰器的运用
May 05 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python实现图像全景拼接
Mar 27 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
Python 实现简单的客户端认证
Jul 29 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
详解Python类和对象内容
Jun 22 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
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
innerText 使用示例
2014/01/23 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
django-初始配置(纯手写)详解
2019/07/30 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python中sys模块是做什么用的
2020/08/16 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
护理学毕业生求职信
2013/11/14 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
车队安全员岗位职责
2015/02/15 职场文书
拖欠货款起诉状
2015/05/20 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android