Python中的面向对象
时间:2010-10-18 来源:icybay
class ClassName: |
2.类继承
lass DerivedClassName(BassClassName): pass
如果基类定义在另一个模块中, 要写成 modname.BaseClassName 。派生类的函数会覆盖基类的同名函数 ,如果想扩充而不是改写基类的函数,可以这样调用基类函数
BaseClassName.methodname(self,arguments) 注意:该基类要在当前全局域或被导入
class A: output: A B |
3.多重继承
class DerivedClassName(Base1,Base2,Base3): pass
对于该类函数的解析规则是深度优先,先是Base1,然后是Base1的基类,诸如此类.
class A: output:
A |
4.常用的操作符重载
__str__/__unicode
class A: |
cmp( self, other) 用来简化比较函数的定义 self < other返回负数,相等时返回0,self>other时返回正数
class A: |
__iter__
for ... in 循环即就是通过这个函数遍历当前容器的对象实例 可配合yield方便的编写这个函数
class A: output:
1 0 1 |
type,返回对象的类型
>>> type("")==str |
getattr:通过类实例和一个字符串动态的调用类函数/属性,hasattr 用来判断实例有无该函数/属性
delattr 用来删除实例的函数/属性
class A: |
property,通过值的方式调用实例无参函数
class A(object):
可以方便的定义一个只读属性 class A(object): @property def x(self): return "Property" |
isinstance(object,classinfo),判断一个对象是否是一个类的实例
>>>class A:pass |