WEB开发网
开发学院软件开发C语言 从C#到Python —— 4 类及面向对象 阅读

从C#到Python —— 4 类及面向对象

 2010-09-30 22:41:42 来源:WEB开发网   
核心提示: (以上部分修改自《Python学习笔记》)4.4.2 多继承 Python支持多继承(C#需要用接口实现),实现方式很简单,从C#到Python —— 4 类及面向对象(7),只需要在类名后的括号中,写入用逗号分隔的多个父类名即可,在Python中,我们把这类功能叫做自省(Introspecti

(以上部分修改自《Python学习笔记》)

4.4.2  多继承

Python支持多继承(C#需要用接口实现),实现方式很简单,只需要在类名后的括号中,写入用逗号分隔的多个父类名即可。不过当父类中有重名的属性时,需要了解Python的搜索顺序,具体可以参考《Python精要参考》的第七章,本文不再详细介绍。

4.4.3  接口与抽象类

Python没有C#中接口的概念,因为可以实现多重继承,使用接口的意义不大,而且Python的标准类基本包含C中接口的大部分功能(不过据说新版本的Python已经考虑要加入接口的功能了)。而C#中抽象类在Python中则可以通过一些变通的方法实现。常用的方法是用 NotImplementedError异常模拟抽象类,示例代码如下:

 1 # -*- coding: utf-8 -*-
 2  def abstract():
 3   raise NotImplementedError("abstract")
 4   
 5  class Car:
 6   def __init__(self):
 7     if self.__class__ is Car:
 8       abstract()
 9     print "Car"
10       
11  class BMW(Car):
12   def __init__(self):
13     Car.__init__(self)
14     print "bmw"
15 
16 bmw = BMW() #子类可以实例化
17  Car()    #抽象类实例化会报错:NotImplementedError: abstract

(以上代码引自《Python模拟抽象类》,见http://www.aowe.net/PHP/751.htm ,略有修改)

4.5  获取对象的信息

在Python这类动态编程语言中,我们经常需要检查一个类、对象或模块,以确定它是什么、它知道什么或它能做什么。在Python中,我们把这类功能叫做自省(Introspection),它非常类似于C#中的反射(Reflection)。

上一页  2 3 4 5 6 7 8  下一页

Tags:Python 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接