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 相关文章推荐
解决sublime+python3无法输出中文的问题
Dec 12 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
python新式类和经典类的区别实例分析
Mar 23 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 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
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
Python3.6正式版新特性预览
2016/12/15 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Python秒算24点实现及原理详解
2019/07/29 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
会计岗位职责模板
2014/03/12 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
努力工作保证书
2015/02/28 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书