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 描述符(Descriptor)入门
Nov 20 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
Django开发中的日志输出的方法
Jul 02 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
pandas.cut具体使用总结
Jun 24 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
python使用matplotlib绘制雷达图
Oct 18 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
PHP4中实现动态代理
2006/10/09 PHP
php生成excel列序号代码实例
2013/12/24 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
a标签click和href执行顺序探讨
2014/06/23 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python实现的tab文件操作类分享
2014/11/20 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python实现代码统计器
2019/09/19 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
毕业生实习鉴定
2013/12/11 职场文书
离婚协议书格式
2014/11/21 职场文书
北京颐和园导游词
2015/01/30 职场文书
中秋节随笔
2015/08/15 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
python实现自动化群控的步骤
2021/04/11 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL