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实现哈希表
Feb 07 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
详解K-means算法在Python中的实现
Dec 05 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
Python的历史与优缺点整理
May 26 Python
8种常用的Python工具
Aug 05 Python
Django如何继承AbstractUser扩展字段
Nov 27 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
thinkphp自带验证码全面解析
2016/09/18 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
详解python基础之while循环及if判断
2017/08/24 Python
使用python 3实现发送邮件功能
2018/06/15 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
python实现飞机大战
2018/09/11 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Python如何实现定时器功能
2020/05/28 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
教师师德演讲稿
2014/05/06 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书