python 类详解及简单实例


Posted in Python onMarch 24, 2017

python 类详解

1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法)

2.Python类是可调用的对象,即类对象

3.类通常在模块的顶层进行定义,以便类实例能够在类所定义的源代码文件中的任何地方被创建。

4.实例初始化

  1. instance = ClassName(args....)
  2. 类在实例化时可以使用__init__和__del__两个特殊的方法。
class ClassName(base):

'class documentation string' #类文档字符串
 class suite        #类体
  1. base:超类是一个或多个用于继承的父类集合
  2. 类体可以包括:声明语句、类成员定义、数据属性、方法
  3. 如果类不存在继承关系,就不提供括号里的base
class FirstClass():
  spam = 30    #类数据属性
  def display(self): #类方法
   print self.spam

 x = FirstClass()   #创建类实例
 x.display()     #方法调用
 >>> 30
 dir(FirstClass)
 >>> ['__doc__', '__module__', 'display', 'spam']
  • class语句类似def,是可执行代码;直到运行class语句后,类才会创建
  • class语句内,任何赋值语句都会创建类属性
  • 每个实例对象都会继承类的属性并获得自己的名称空间

Python类方法及调用

实例(对象)包含的属性

  • 可调用的属性:方法
  • 数据属性

在OOP中,实例就像是带有“数据”的记录,而类是处理这些记录的“程序”

  • 通过实例调用方法相当于调用所属类的方法来处理当前实例。 比如之前的代码例子,x.display() 会被自动转换为 FirstClass.display(x),即调用类的方法来处理实例x
  • 因此,类中每个方法必须有self参数,它隐含当前实例之意
  • 在方法内对self属性做赋值运算会产生每个实例自己的属性
  • Python规定,没有实例,方法不允许被调用,这是‘绑定'(binding)的概念
  • class语句中的赋值语句会创建类属性,如前面例子的spam
  • 在类方法中对传给方法的特殊参数self进行赋值会创建实例属性

Python构造器

创建实例时,Python会自动调用类中的__init__方法,以隐形的为实例提供属性

  1. __init__方法被称为构造器
  2. 如果类中没有定义__init__方法,实例创建之初仅仅是一个简单的名称空间。
  3. __init__的第一个参数一定是self ,self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self,但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。
  • __init__不能返回任何对象
  • 析构函数:__del__
  • 构造函数是必要的,而析构函数常常可以不考虑(Python解释器会自己回收)
class MyClass():
 def __init__(self, name):
  self.name = name
  print 'My name is ' + self.name
 def __del__(self):
  print self.name + ' is dead.'

i1 = MyClass('Shaw')
>>> My name is Shaw
del i1
>>> Shaw id dead.

类的特殊属性

  • 使用dir()或__dict__,查看类或实例的属性
  • __doc__:获取文档字符串
  • __base__:获取所有父类
  • __module__:类所在的模块
  • __name__:实例所属类的名字

Python类方法中可用的变量

  • 实例变量:self.变量名
  • 局部变量:方法内部创建的变量,可直接使用
  • 静态变量:类中定义的变量。类名.变量名
  • 全局变量:直接使用

继承

继承描述了基类的属性如何‘遗传'给派生类

  1. 子类可以继承他的基类的任何属性,包括数据属性和方法
  2. 一个未指定基类的类,其默认有一个叫object的基类
  3. Python允许多重继承(可以继承多个父类)

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python图像处理之反色实现方法
May 30 Python
Python中的getopt函数使用详解
Jul 28 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
python解析含有重复key的json方法
Jan 22 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
Python类的动态修改的实例方法
Mar 24 #Python
Python操作Excel之xlsx文件
Mar 24 #Python
解决uWSGI的编码问题详解
Mar 24 #Python
Python中动态创建类实例的方法
Mar 24 #Python
python3中set(集合)的语法总结分享
Mar 24 #Python
Python Socket编程详细介绍
Mar 23 #Python
python3中int(整型)的使用教程
Mar 23 #Python
You might like
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
js的三种继承方式详解
2017/01/21 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
Python不规范的日期字符串处理类
2014/06/10 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
学校体育节班级口号
2015/12/25 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
详细介绍python操作RabbitMq
2022/04/12 Python