`
mixer_a
  • 浏览: 357069 次
社区版块
存档分类
最新评论

python面向对象编程

 
阅读更多


1.类:

 

[python] view plaincopy
  1. class MyClassA:  
  2.     pass  
  3.   
  4. ma = MyClassA()  

用python写个类就这么简单,当然这个类啥也不能干。

 

2.成员函数

 

[python] view plaincopy
  1. class MyClassA:  
  2.     def tell(self):  
  3.         print('This is MyClassA')  
  4.   
  5. ma = MyClassA()  
  6.   
  7. ma.tell()  

可以看到,比普通函数多了一个self,用于对对象的变量引用。类似c++的this指针,不过这个用"."而不是"->"访问变量。

 

尽管多了一个self,但同C++和java比,代码显然更干净整齐。

3.特殊函数

 

[python] view plaincopy
  1. class MyClassA:  
  2.     def tell(self):  
  3.         print('This is MyClassA')  
  4.     def __init__(self):  
  5.         print('MyClassA init')  
  6.     def __del__(self):  
  7.         print('MyClassA del')  
>>> ma = MyClassA()
MyClassA init
>>> ma = 0
MyClassA del
>>> 

 

可以看到__init__类似于构造函数,__del__类似于析构函数。也可以看到,由于python是动态语言,一旦对象没有引用,就会被析构。

4.对象的变量和类的变量

 

[python] view plaincopy
  1. class MyClassA:  
  2.     classNum = 0  
  3.     def tell(self):  
  4.         print('This is MyClassA')  
  5.     def __init__(self):  
  6.         self.num = 0  
  7.         MyClassA.classNum += 1  
  8.         print('MyClassA init')  
  9.     def __del__(self):  
  10.         MyClassA.classNum -= 1  
  11.         print('MyClassA del')  
  12.     def setNum(self,num):  
  13.         self.num = num  
  14.     def getNum(self):  
  15.         return self.num  
  16.     def printClassCount():  
  17.         print(MyClassA.classNum)  

>>> ma = MyClassA()
MyClassA init
>>> mb = MyClassA()
MyClassA init
>>> ma.setNum(3)
>>> mb.setNum(5)
>>> mb.getNum()
5
>>> ma.getNum()
3
>>> ma = MyClassA()
MyClassA init
MyClassA del
>>> MyClassA.printClassCount()
1
>>> mb = MyClassA()
MyClassA init
MyClassA del
>>> MyClassA.printClassCount()
2
>>> ma = MyClassA()
MyClassA init
MyClassA del
>>> MyClassA.printClassCount()
2
>>> 
num是对象的变量,classNums是类的对象。前者类似C++的成员变量,后者类似C++的类的静态变量。类的变量是所有对象共享的,不需要对象,可以直接用“类名.变量名”访问。而对象的变量是每个对象一个拷贝,必须通过对象访问。
通过上面还可以看到,对象指向一个新建对象,会先init再del。
上面的printClassCount()类似C++的静态函数。就像静态函数没有this指针一样,它也没有self变量。

5.继承

 

[python] view plaincopy
  1. class MyClassB(MyClassA):  
  2.     def tell(self):  
  3.         print('This is MyClassB')  

括号里就是父类,python的继承很简单吧

 

 

[python] view plaincopy
  1. class MyClassB(MyClassA):  
  2.     def tell(self):  
  3.         MyClassA.tell(self)  
  4.         print('This is MyClassB')  

可以像上面这样调用父类的函数。

 

子类中不能有跟父类同名的类的变量,就算声明一个同名变量,其实际跟父类是一个变量。

6.封装

面向对象的三大特点(封装,继承多态),对于C++和JAVA等静态语言,封装完就定了。而python作为动态语言,可以随时往对象里加东西,当然我们不推荐这样做。

例如上面的ma对象,只要ma.new_item = 100,就给ma添加了一个新成员变量。

7.多态

由于pytho是动态语言,每个对象都知道自己类型,本身就能实现多态,好像也没法不多态。

 

[python] view plaincopy
  1. ma = MyClassA()  
  2. mb = MyClassB()  
  3. mc = ma #mc是MyClassA  
  4. mc = mb #mc是MyClassB  

看上去,动态比多态更变态吧。 也模仿来个孙悟空派他的猴子猴孙打闹天宫的场景:
分享到:
评论

相关推荐

    Python 面向对象编程

    "Python 面向对象编程基础知识点" Python 面向对象编程是 Python 编程语言的基础,它具有独特的编程风格和语法规则。本文将从逻辑行和物理行、缩进、注释、main 函数、变量、表达式、语句、数据类型和运算等方面...

    Python 面向对象编程指南 new

    《Python面向对象编程指南》这本书,由Steven F. Lott编写,提供了一个全面深入的视角来理解和应用Python的OOP特性。 面向对象编程的核心概念包括类(Class)、对象(Object)、继承(Inheritance)、封装...

    Python面向对象编程指南

    Python面向对象编程指南深入介绍Python语言的面向对象特性,全书分3个部分共18章。第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、...

    面向对象编程基础_python面向对象_python教程_

    以上就是Python面向对象编程的基本概念和特性。掌握这些基础知识,能帮助你更好地理解和编写Python程序,尤其在处理复杂逻辑和大型项目时,面向对象编程的优势会更加明显。在实际应用中,不断实践和探索,才能真正...

    Python实验一 面向对象程序设计实验.doc

    面向对象程序设计是 Python 中的一种重要编程范式,它基于类和对象的概念,强调数据封装、继承和多态性。本实验旨在让学生深入理解和实践面向对象编程的基本原理和技巧。 首先,实验要求学生掌握类的定义。在 ...

    Python面向对象编程指南.[美]Steven F.Lott(带详细书签).part2.rar

    Python面向对象编程指南.[美]Steven F.Lott(带详细书签),分成两个压缩包。本书由树莓派基金会资深软件开发工程师亲笔撰写,是学习在树莓派上编程的必备手册。即使你没有任何编程经验,也可以畅游树莓派的世界。本书...

    Python面向对象程序设计

    Python面向对象程序设计 Python面向对象程序设计

    Python 面向对象(基础篇).pdf

    * Web开发:Python面向对象编程可以用于Web开发,例如使用Django框架开发Web应用程序。 * 科研计算:Python面向对象编程可以用于科研计算,例如使用NumPy和SciPy库进行科学计算。 * 数据分析:Python面向对象编程...

    Python面向对象编程速成(速记速学小例子和源码迅速学会Python面向对象编程)

    自己整理的Python面向对象编程速记速学小例子和源码,只有6页,可以迅速学会Python面向对象编程。原书已加入书签方便阅读。介绍了类的声明,实例化,绑定属性,构造函数,数据封装,继承,多态,实例属性和类属性。...

    python面向对象程序设计实践(高级).pptx

    python面向对象程序设计实践(初级) ——以《三国演义》中三英大战吕布为例 设计实现思路: 设计类 定义武器类:武器名,攻击力 定义人物类:继承武器类,姓名,生命值 设计函数简化对象的使用 延时函数:延时0.5秒...

    python面向对象编程课件

    课件PPT资源,主要集中在面向对象编程讲解这一块,共计5个PPt,其中最长的比较全面,是基于python的程序设计思想与方法的课件,正好整理材料收集的,发上来共享一下,但是为啥我不能修改币币呢,我只要一个意思意思...

    Python 3面向对象编程

    《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。, 《Python 3面向对象编程》不是Python 的入门书籍,适合...

    3. Python 面向对象编程.ipynb

    3. Python 面向对象编程.ipynb3. Python 面向对象编程.ipynb 3. Python 面向对象编程.ipynb 3. Python 面向对象编程.ipynb 3. Python 面向对象编程.ipynb 3. Python 面向对象编程.ipynb 3. Python 面向对象编程....

    PYTHON面向对象编程指南 [(美)STEVEN F.LOTT著;张心韬,兰亮译][人民邮电出版社].part1

    PYTHON面向对象编程指南 [(美)STEVEN F.LOTT著;张心韬,兰亮译][人民邮电出版社].part1共2卷

    Python3面向对象编程

    《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。 《Python 3面向对象编程》不是Python 的入门书籍,适合具有...

    python面向对象练习题.pdf

    ### Python面向对象编程知识点解析 #### 一、面向对象三大特性及作用 **1. 封装** 封装是面向对象编程中的一个重要概念,它通过隐藏类的内部细节并对外提供公共接口来保护数据的安全性和完整性。封装使得类的使用...

    Python 面向对象(进阶篇).pdf

    Python面向对象编程是一种基于类和对象概念的编程范式,它支持封装、继承和多态等面向对象的特性。在面向对象编程中,类可以看作是对象的蓝图或模板,而对象则是根据类创建的实例。类中可以定义字段(数据成员)、...

    python_面向对象编程指南

    PYTHON 面向对象 编程指南 本来想免积分的,但是 现在好像不能免积分了,大家用到的下载看看吧

    PYTHON面向对象编程指南

    [美] Steven F. Lott 洛特,2016年人民邮电出版社出版

Global site tag (gtag.js) - Google Analytics