`

python面向对象编程小结

 
阅读更多

参考:http://sucre.iteye.com/blog/680101

 

 

一、类基础

1、类的定义

class <类名>:

    <其他语句>

class <类名>(父类名):

    <其他语句>

Python代码   收藏代码
  1. >>> class human:  
  2. ...     age=0  
  3. ...     sex=''  
  4. ...     name = ''  
  5. ...  
  6. >>> class student(human):  
  7. ...     school = ''  
  8. ...     number = 0  
  9. ...     grade = 0  
  10. ...  
  11. >>>   

 

2、类的使用

如果直接使用类名修改其属性,那么将影响已经实例化的对象。

 

Python代码   收藏代码
  1. >>> class A:  
  2. ...     name = 'A'  
  3. ...     num = 2  
  4. ...  
  5. >>> A.name  
  6. 'A'  
  7. >>> a = A()       #实例化a对象  
  8. >>> a.name  
  9. 'A'  
  10. >>> A.name = 'B'  
  11. >>> A.name  
  12. 'B'  
  13. >>> a.name  
  14. 'B'  
  15. >>>   

 

二、类的属性和方法

1、类的属性:

如果类的属性是以两条下划线开始则该属性为类的私有属性,不能在类外部被访问。

私有属性的命名形式: __privateAttrs

 

如果在类内部的方法中使用类的私有属性,则应该以如下方式调用。

self.__privateAttrs

Python代码   收藏代码
  1. >>> class book:     
  2. ...     __author = ''    
  3. ...     __name = ''    
  4. ...     __page = 0    
  5. ...     price = 0    
  6. ...     
  7. >>> a = book()     
  8. >>> a.__author     
  9. Traceback (most recent call last):     
  10.   File "<stdin>", line 1in <module>     
  11. AttributeError: book instance has no attribute '__author'    
  12. >>> a.price     
  13. 0    
  14. >>>   

 
2、类的方法

在类的内部使用def关键字可以为类定义一个方法。与函数定义不同的是,类的方法必须包含参数 'self ’ ,

且'self'必须为第一个参数。和类的私有属性命名相同,类的私有方法名也要以两条下划线开始。

Python代码   收藏代码
  1. >>> class book:  
  2. ...     __author = ''  
  3. ...     __name = ''  
  4. ...     __page = 0  
  5. ...     price = 0  
  6. ...     def show(self):  
  7. ...             print self.__author  
  8. ...             print self.__name  
  9. ...     def setname(self,name):  
  10. ...             self.__name = name  
  11. ...  
  12. >>> a = book()  
  13. >>> a.show()  
  14.   
  15.   
  16. >>> a.setname('Tom')  
  17. >>> a.show()  
  18.   
  19. Tom  
  20. >>>   

 

在python中有一类以两条下划线开始并且以两条下划线结束的类方法,称之为专有方法。

__init__  构造函数,生成对象时调用

__del__  析构函数,释放对象时调用

__add__ 加运算

__mul__  乘运算

__cmp__ 比较运算

__repr__ 打印、转换

__setitem__ 按照索引赋值

__getitem__ 按照索引获取值

__len__ 获得长度

__call__ 函数调用

Python代码   收藏代码
  1. >>> class book:  
  2. ...     __author = ''  
  3. ...     __name = ''  
  4. ...     __page = ''  
  5. ...     price = 0  
  6. ...     def __check(self,item):  
  7. ...             if item == '':  
  8. ...                     return 0  
  9. ...             else:  
  10. ...                     return 1  
  11. ...     def show(self):  
  12. ...             if self.__check(self.__author):  
  13. ...                     print self.__author  
  14. ...             else:  
  15. ...                     print 'No value'  
  16. ...             if self.__check(self.__name):  
  17. ...                     print self.__name  
  18. ...             else:  
  19. ...                     print 'No value'  
  20. ...     def setname(self,name):  
  21. ...             self.__name = name  
  22. ...     def __init__(self,author,name):  
  23. ...             self.__author = author  
  24. ...             self.__name = name  
  25. ...   

 三、类的继承

1)单继承

Python代码   收藏代码
  1. >>> class parent:  
  2. ...     __a = ''  
  3. ...     __b = 0  
  4. ...     def __init__(self,a,b):  
  5. ...             self.__a = a  
  6. ...             self.__b = b  
  7. ...     def show(self):  
  8. ...             print self.__a  
  9. ...             print self.__b  
  10. ...  
  11. >>> a = parent('a',2)  
  12. >>> a.show()  
  13. a  
  14. 2  
  15. >>> class child(parent):  
  16. ...     __c = ''  
  17. ...     __d = 4  
  18. ...     def showinfo(self):  
  19. ...             self.show()  
  20. ...  
  21. >>> b = child('c',3)  
  22. >>> b.show()  
  23. c  
  24. 3  
  25. >>> b.showinfo()  
  26. c  
  27. 3  
  28. >>>   

 2)多重继承

Python代码   收藏代码
  1. # -*- coding:utf-8 -*-   
  2. class A:       #定义类A  
  3.  name = 'A'   
  4.  __num = 1  
  5.  def show(self):  
  6.   print self.name  
  7.   print self.__num  
  8.  def setnum(self,num):  
  9.   self.__num = num  
  10. class B:        #定义类B  
  11.  nameb = 'B'  
  12.  __numb = 2  
  13.  def show(self):  
  14.   print self.nameb  
  15.   print self.__numb  
  16.  def setname(self,name):  
  17.   self.__name = name  
  18. class C(A,B):  
  19.  def showall(self):  
  20.   print self.name  
  21.   print self.nameb  
  22.  show = B.show      #在这里表明show方法为B类的show方法,后来修改加上的  
  23.   
  24. >>> import jicheng  
  25. >>> a = jicheng.A()  
  26. >>> a.show()  
  27. A  
  28. 1  
  29. >>> c = jicheng.C()  
  30. >>> c.showall()  
  31. A  
  32. B  
  33. >>> c.show()  #默认调用A类的show方法  
  34. A  
  35. 1  
  36. >>> reload(jicheng)   #修改jicheng.py后重新加载  
  37. <module 'jicheng' from 'jicheng.py'>  
  38. >>> d =jicheng.C()  
  39. >>> d.show()  
  40. B  
  41. 2  
  42. >>>   

 五)重载

1)方法的重载实际上就是在类中使用def关键字重载父类的方法。如果重载父类中的方法,但又需要

在类中使用父类的该方法,可以使用父类名加‘ .’加方法名的形式调用。

Python代码   收藏代码
  1. # -*- coding:utf-8 -*-     
  2. class Mylist:     
  3.     __mylist = []     
  4.     def __init__(self,*args):          
  5.         self.__mylist = []     
  6.         for arg in args:     
  7.             self.__mylist.append(arg)      
  8.     def __add__(self,n):            #重载‘+’运算符     
  9.         for i in range(0, len(self.__mylist)):     
  10.             self.__mylist[i] = self.__mylist[i] + n      
  11.     def show(self):     
  12.         print self.__mylist     
  13.     
  14.     
  15. >>> import chongzai     
  16. >>> L = chongzai.Mylist(1,2,3,4,5)     
  17. >>> L.show()     
  18. [12345]     
  19. >>> L + 2    
  20. >>> L.show()     
  21. [34567]     
  22. >>>    

 

分享到:
评论

相关推荐

    Python面向对象程序设计示例小结

    在Python编程语言中,面向对象...以上就是Python面向对象程序设计的基本要素,包括类定义、实例化、继承、私有变量以及特殊方法的使用。通过理解并熟练应用这些概念,开发者可以构建出更复杂、可维护性更强的代码结构。

    Python面向对象程序设计之类的定义与继承简单示例

    本篇文章介绍了Python面向对象编程的基础概念,包括类的定义、实例化、类变量与对象变量的区别以及继承等。这些基础知识对于理解和使用面向对象编程非常关键。通过实际例子演示了如何定义类及其属性,如何创建实例并...

    python类与对象小结

    首先,Python作为一种面向对象编程语言,它允许我们将数据和功能组织成类(class),而对象(object)则是类的实例。在Python中,类的命名约定是类名以大写字母开头,而函数名则以小写字母开头。 1. 类与对象:在...

    Python语言程序设计习题答案.zip

    第6章 Python面向对象程序设计。面向过程的程序设计方法难以保证程序的安全性和代码的可重用性,而面向对象的程序设计方法能够更好地提高大型程序的质量和开发效率,增强程序的安全性和提高代码的可重用性。学习本章...

    少儿python编程教学 少儿编程python授课ppt

    Python支持面向对象编程,孩子们将学习如何定义类,创建对象,并理解继承、封装和多态等核心概念。通过创建简单的游戏或模拟情境,孩子们可以直观地理解这些概念。 **五、Python标准库与第三方库** Python拥有丰富...

    Python语言程序设计PPT课件.zip

    第6章 Python面向对象程序设计。面向过程的程序设计方法难以保证程序的安全性和代码的可重用性,而面向对象的程序设计方法能够更好地提高大型程序的质量和开发效率,增强程序的安全性和提高代码的可重用性。学习本章...

    python青少年趣味编程课程-详细教学大纲-中小学少儿编程课堂(1).docx

    面向对象编程的概念也会被引入,包括类的创建和使用、实例化对象、访问和修改属性,以及定义类方法。此外,课程还将讲解继承的概念,创建父类和子类,重写方法,并通过实例对象来调用方法和访问属性。 课程的考核...

    Python语言程序设计源代码.zip

    使读者在认识物质世界规律的过程中了解计算机的特点、程序设计的特点和人机交互的规律,在认识世界、解释世界和改造世界的实践中掌握Python编程特点、技术和技巧,学会结构化程序设计、面向对象程序设计、人机交互...

    python扫雷游戏设计(课程设计版)

    总的来说,Python扫雷游戏设计是一次实践性强、技术含量高的课程设计,它涵盖了面向对象编程的基础概念,如类和对象的定义、继承和封装,同时也锻炼了学生的算法设计能力、问题解决能力和文档撰写能力。完成这个项目...

    Python编程入门经典

    10.3.1 定义面向对象编程 151 10.3.2 创建类 151 10.3.3 扩展已有的类 152 10.4 完成模块 153 10.4.1 定义模块特定的错误 154 10.4.2 选择导出哪些内容 154 10.4.3 为模块建立文档 155 10.4.4 测试模块 164 10.4.5 ...

    《Python语言程序设计》课后习题答案

    2. **面向对象编程**:类的定义、对象的创建与销毁、继承、封装、多态等概念的实践应用。 3. **异常处理**:了解和使用try/except语句来捕获和处理程序运行时可能出现的错误。 4. **文件操作**:如何读写文件,...

    第11章 面向对象编程(上).pptx

    面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它将程序设计围绕“对象”来进行。在面向对象的世界观中,一切事物都可以被视为对象,每个对象都有其特定的状态(属性)和行为(方法)。...

    夜曲编程Python入门课程知识点思维导图

    10. **数据和运算小结**(D6数据和运算小结.png):Python支持多种数据类型,包括整型、浮点型、字符串、布尔型等。运算符包括算术运算符(+、-、*、/、%等)、比较运算符(==、!=、&lt;、&gt;等)、逻辑运算符(and、or、...

    python小游戏大全——30个

    5. 类与对象:面向对象编程思想,通过定义类来组织和抽象游戏中的各种元素。 6. 单元测试:编写测试用例,确保游戏功能的正确性。 7. 设计模式:如工厂模式、装饰器模式等,可以提高代码的灵活性和可扩展性。 ...

    Python 核心编程 第二版

    阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等...

    python基础小结.doc

    掌握这些基础知识是Python编程的基石,它们将帮助你理解更复杂的概念,如面向对象编程、异常处理、模块化和更多进阶主题。Python的易学性和强大的库生态系统使得它成为初学者和专业开发者的首选语言。通过不断实践和...

    python-Python-turtle库知识小结.rar

    通过学习这个“python-Python-turtle库知识小结.py”文件,你可以深入了解Turtle库的用法,掌握图形编程的基本技巧,并激发创造力,设计出丰富多彩的图形作品。无论是初学者还是有经验的开发者,Turtle库都是一个...

Global site tag (gtag.js) - Google Analytics