class ClassName: '类的帮助信息' #类文档字符串 class_suite #类体
"创建 Employee 类的第一个对象" emp1 = Employee("Zara", 2000) "创建 Employee 类的第二个对象" emp2 = Employee("Manni", 5000)
emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount
● __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
● __doc__ :类的文档字符串
● __name__: 类名
● __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
● __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。
class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite
- issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
- isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。
序号 | 方法, 描述 & 简单的调用 |
1 |
__init__ ( self [,args...] ) 构造函数 简单的调用方法: obj = className(args) |
2 |
__del__( self ) 析构方法, 删除一个对象 简单的调用方法 : del obj |
3 |
__repr__( self ) 转化为供解释器读取的形式 简单的调用方法 : repr(obj) |
4 |
__str__( self ) 用于将值转化为适于人阅读的形式 简单的调用方法 : str(obj) |
5 |
__cmp__ ( self, x ) 对象比较 简单的调用方法 : cmp(obj, x) |
#!/usr/bin/python class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add__(self,other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print v1 + v2 以上代码执行结果如下所示: Vector(7,8)
- __foo__: 定义的是特列方法,类似 __init__() 之类的。
- _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
- __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。