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 19 Python
python进阶教程之模块(module)介绍
Aug 30 Python
python3抓取中文网页的方法
Jul 28 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
详解Python发送email的三种方式
Oct 18 Python
Python后台开发Django会话控制的实现
Apr 15 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
python实现银行实战系统
Feb 26 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
python 实现简单的计算器(gui界面)
Nov 11 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调用Oracle存储过程的方法
2008/09/12 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python银行系统实现源码
2019/10/25 Python
django序列化serializers过程解析
2019/12/14 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
django 外键创建注意事项说明
2020/05/20 Python
个人求职简历的自我评价范文
2013/10/09 职场文书
自我评价个人范文
2013/12/16 职场文书
户外婚礼策划方案
2014/02/08 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
生日宴会祝酒词
2015/08/10 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android