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从入门到精通(DAY 2)
Dec 20 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
Python探索之修改Python搜索路径
Oct 25 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python使用pymysql模块操作MySQL
Jun 16 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 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 ftp文件上传函数(基础版)
2010/06/03 PHP
php中static静态变量的使用方法详解
2010/06/04 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
python 求10个数的平均数实例
2019/12/16 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
numba提升python运行速度的实例方法
2021/01/25 Python
法学毕业生自荐信
2013/11/13 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js