Browsed by
Category: 计算机技术

Python中面向对象的一点概念

Python中面向对象的一点概念

Python的面向对象和C++颇有一些差异,主要体现在父类和子类的关系、函数重载、虚函数等方面。基本上可以说,在Python的内心,闪烁着C的光芒。

这样说可能太文绉绉了些,看下面这段代码,就能了解到一些基本的概念了:

子类的实例需要调用父类定义的函数时,必须在子类中重定义父类函数。
class A(object):
def __init__(self):
print “a::__init__”
def func1(self):
print “a::func1”
self.func2()   #注意:func2在A中没有定义!
class B(A):
def __init__(self):
super(B,self).__init__() #子类不会自动调用父类的构造函数,需要显示定义
print “b::__init__”
def func1(self):
print “b::func1”
super(B,self).func1()
def func2(self):
print “b::func2”
bObj = B()
bObj.func1()
用Python扩展C/C++程序的小技巧

用Python扩展C/C++程序的小技巧

通常都是用C/C++来扩展Python应用。而在我们程序中是反过来的,核心是C/C++程序,嵌入Python来提供扩展脚本,满足业务开发的需要。

这种模式下,很难应用现有的一些IDE工具来查错和调试。通常我们总是通过输出打印信息来检查python脚本逻辑是否出错。但是对一些语法错误,由于没有IDE工具辅助,反而不易排查,经常阻碍开发进度。后来发现可以应用traceback模块来迅速定位出错的地方,这可真是个很不错的模块。具体实现如下:

def TraceError(self):

exc_type, exc_value, exc_traceback = sys.exc_info()
exc_list = traceback.format_exception(exc_type, exc_value,exc_traceback)
exc_len = len(exc_list)
index = 0

while exc_len > 0:
self.Trace(exc_list[index])  # 自定义输出函数
index += 1
exc_len -= 1
return