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 实现 贪吃蛇大作战 代码分享
Sep 07 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
python如何创建TCP服务端和客户端
Aug 26 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
python判断变量是否为列表的方法
Sep 17 Python
python实现Thrift服务端的方法
Apr 20 Python
在python中读取和写入CSV文件详情
Jun 28 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数据库抽象层 PDO
2011/05/07 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
php查询内存信息操作示例
2019/05/09 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
优秀医生事迹材料
2014/02/12 职场文书
车间安全生产标语
2014/06/06 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
Python竟然能剪辑视频
2021/05/25 Python