从C#到Python —— 4 类及面向对象
2010-09-30 22:41:42 来源:WEB开发网(以上部分修改自《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)。
更多精彩
赞助商链接