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函数帮助查询小工具
Mar 13 Python
Python时间戳与时间字符串互相转换实例代码
Nov 28 Python
python中global与nonlocal比较
Nov 21 Python
Python 转义字符详细介绍
Mar 21 Python
Flask框架WTForm表单用法示例
Jul 20 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
php数组分页实现方法
2016/04/30 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
javascript 写类方式之七
2009/07/05 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python爬取淘宝商品销量信息
2018/11/16 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
中学教师实习自我鉴定
2013/09/28 职场文书
初二生物教学反思
2014/02/03 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
质检员工作总结2015
2015/04/25 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL