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实现用户登录系统
May 21 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
python实现飞行棋游戏
Feb 05 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
Python中logger日志模块详解
Aug 04 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
python基础学习之递归函数知识总结
May 26 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
Zend Studio使用技巧两则
2016/04/01 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
vue实现购物车的监听
2020/04/20 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python实现句子翻译功能
2017/11/14 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
Python生成器常见问题及解决方案
2020/03/21 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
设计总监岗位职责
2013/12/07 职场文书
进口业务员岗位职责
2014/04/06 职场文书
大学生创业计划书
2014/08/14 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript