参考:http://sucre.iteye.com/blog/680101
一、类基础
1、类的定义
class <类名>:
<其他语句>
class <类名>(父类名):
<其他语句>
- >>> class human:
- ... age=0
- ... sex=''
- ... name = ''
- ...
- >>> class student(human):
- ... school = ''
- ... number = 0
- ... grade = 0
- ...
- >>>
2、类的使用
如果直接使用类名修改其属性,那么将影响已经实例化的对象。
- >>> class A:
- ... name = 'A'
- ... num = 2
- ...
- >>> A.name
- 'A'
- >>> a = A()
- >>> a.name
- 'A'
- >>> A.name = 'B'
- >>> A.name
- 'B'
- >>> a.name
- 'B'
- >>>
二、类的属性和方法
1、类的属性:
如果类的属性是以两条下划线开始则该属性为类的私有属性,不能在类外部被访问。
私有属性的命名形式: __privateAttrs
如果在类内部的方法中使用类的私有属性,则应该以如下方式调用。
self.__privateAttrs
- >>> class book:
- ... __author = ''
- ... __name = ''
- ... __page = 0
- ... price = 0
- ...
- >>> a = book()
- >>> a.__author
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- AttributeError: book instance has no attribute '__author'
- >>> a.price
- 0
- >>>
2、类的方法
在类的内部使用def关键字可以为类定义一个方法。与函数定义不同的是,类的方法必须包含参数 'self ’ ,
且'self'必须为第一个参数。和类的私有属性命名相同,类的私有方法名也要以两条下划线开始。
- >>> class book:
- ... __author = ''
- ... __name = ''
- ... __page = 0
- ... price = 0
- ... def show(self):
- ... print self.__author
- ... print self.__name
- ... def setname(self,name):
- ... self.__name = name
- ...
- >>> a = book()
- >>> a.show()
-
-
- >>> a.setname('Tom')
- >>> a.show()
-
- Tom
- >>>
在python中有一类以两条下划线开始并且以两条下划线结束的类方法,称之为专有方法。
__init__ 构造函数,生成对象时调用
__del__ 析构函数,释放对象时调用
__add__ 加运算
__mul__ 乘运算
__cmp__ 比较运算
__repr__ 打印、转换
__setitem__ 按照索引赋值
__getitem__ 按照索引获取值
__len__ 获得长度
__call__ 函数调用
- >>> class book:
- ... __author = ''
- ... __name = ''
- ... __page = ''
- ... price = 0
- ... def __check(self,item):
- ... if item == '':
- ... return 0
- ... else:
- ... return 1
- ... def show(self):
- ... if self.__check(self.__author):
- ... print self.__author
- ... else:
- ... print 'No value'
- ... if self.__check(self.__name):
- ... print self.__name
- ... else:
- ... print 'No value'
- ... def setname(self,name):
- ... self.__name = name
- ... def __init__(self,author,name):
- ... self.__author = author
- ... self.__name = name
- ...
三、类的继承
1)单继承
- >>> class parent:
- ... __a = ''
- ... __b = 0
- ... def __init__(self,a,b):
- ... self.__a = a
- ... self.__b = b
- ... def show(self):
- ... print self.__a
- ... print self.__b
- ...
- >>> a = parent('a',2)
- >>> a.show()
- a
- 2
- >>> class child(parent):
- ... __c = ''
- ... __d = 4
- ... def showinfo(self):
- ... self.show()
- ...
- >>> b = child('c',3)
- >>> b.show()
- c
- 3
- >>> b.showinfo()
- c
- 3
- >>>
2)多重继承
-
- class A:
- name = 'A'
- __num = 1
- def show(self):
- print self.name
- print self.__num
- def setnum(self,num):
- self.__num = num
- class B:
- nameb = 'B'
- __numb = 2
- def show(self):
- print self.nameb
- print self.__numb
- def setname(self,name):
- self.__name = name
- class C(A,B):
- def showall(self):
- print self.name
- print self.nameb
- show = B.show
-
- >>> import jicheng
- >>> a = jicheng.A()
- >>> a.show()
- A
- 1
- >>> c = jicheng.C()
- >>> c.showall()
- A
- B
- >>> c.show()
- A
- 1
- >>> reload(jicheng)
- <module 'jicheng' from 'jicheng.py'>
- >>> d =jicheng.C()
- >>> d.show()
- B
- 2
- >>>
五)重载
1)方法的重载实际上就是在类中使用def关键字重载父类的方法。如果重载父类中的方法,但又需要
在类中使用父类的该方法,可以使用父类名加‘ .’加方法名的形式调用。
-
- class Mylist:
- __mylist = []
- def __init__(self,*args):
- self.__mylist = []
- for arg in args:
- self.__mylist.append(arg)
- def __add__(self,n):
- for i in range(0, len(self.__mylist)):
- self.__mylist[i] = self.__mylist[i] + n
- def show(self):
- print self.__mylist
-
-
- >>> import chongzai
- >>> L = chongzai.Mylist(1,2,3,4,5)
- >>> L.show()
- [1, 2, 3, 4, 5]
- >>> L + 2
- >>> L.show()
- [3, 4, 5, 6, 7]
- >>>
分享到:
相关推荐
主要介绍了Python面向对象程序设计,结合实例形式总结分析了Python面向对象程序设计中比较常见的类定义、实例化、继承、私有变量等相关使用技巧与操作注意事项,需要的朋友可以参考下
主要介绍了Python 面向对象部分知识点,总结分析了Python面向对象程序设计中类、对象、实例等相关概念、原理与使用技巧,需要的朋友可以参考下
第6章 Python面向对象程序设计。面向过程的程序设计方法难以保证程序的安全性和代码的可重用性,而面向对象的程序设计方法能够更好地提高大型程序的质量和开发效率,增强程序的安全性和提高代码的可重用性。学习本章...
第6章 Python面向对象程序设计。面向过程的程序设计方法难以保证程序的安全性和代码的可重用性,而面向对象的程序设计方法能够更好地提高大型程序的质量和开发效率,增强程序的安全性和提高代码的可重用性。学习本章...
使读者在认识物质世界规律的过程中了解计算机的特点、程序设计的特点和人机交互的规律,在认识世界、解释世界和改造世界的实践中掌握Python编程特点、技术和技巧,学会结构化程序设计、面向对象程序设计、人机交互...
1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的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 ...
方法名(参数)2.4 修改属性2.4.1 直接修改2.4.2 通过方法修改属性2.4.3 继续拓展2.5 小结第三部分 类的继承——class 子类名(父类名)引子3.1 简单的继承3.2 给子类添加属性和方法3.3 重写父类的方法(多态)——方法...
阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等...
1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型开发工具 1.3.11 内存管理器...
你还不知道什么是异常,额… 1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面...
文章目录面向对象高级编程使用__slots__使用__slots__使用@property练习多重继承Mixln小结定制类__str____iter____getitem____getattr____call__小结使用枚举类exercise小结使用元类type()metaclass 面向对象高级...
1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型开发工具 1.3.11 内存管理器...
1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型开发工具 1.3.11 内存管理器...
, 类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。, 异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。, 讨论Python 3.0。, 《Python学习手册(第3版)》让你对...
1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型开发工具 1.3.11 内存管理器...
类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。 异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。 《Python学习手册(第3版)》讲述了:Python可移植、...
类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。 异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。 《Python学习手册(第3版)》讲述了:Python可移植、...