0、类的使用:
class car:
def __init__(self,time,speed):
self.time=time
self.speed=speed
def distance(self):
print 'distance across: %d' % (self.time*self.speed)
>>> a=car(5,20)
>>> a.distance()
distance across: 100
>>> b=car(3,10)
>>> b.distance()
distance across: 30
>>> b.speed
10
>>> a.speed
20
>>> a.time
5
>>> b.time
3
>>>
1、类的构造方法:格式为 def __init__(self,参数列表):
2、类中实例方法的定义:格式为 def 函数名(self,参数列表):
注意:没有self修饰的变量是类属性,那么没有self参数的方法就是类方法,即静态方法。
【但是】上面类调用实例属性报错,但是类调用非静态方法(即有self参数)的方法不会报错的。
__version是类私有变量,如果一个下划线_version就是模块级别私有变量,不能被form import 导入
3、类的成员变量:
实例成员变量:self.变量 ,绑定在实例上
class time:
def __init__(self,time):
self.time=time
def printtime(self):
print 'time is %d' % self.time[0]
实例成员变量,作用域只在自己的实例中
如上例:
>>> a=time([25,10])
>>> b=time([30,15])
>>> a.printtime()
time is 25
>>> b.printtime()
time is 30
>>> a.time=[0]
>>> b.time
[30, 15]
>>> a.time
[0]
类属性变量:类名.变量,它是该类所有实例共有的变量 # 一般情况下不要用全局成员变量
class time:
members=0 #直接在类中定义的都是类属性,所有类属性的引用都是:类名.属性 ,如果调用一个实例x.members,那么这个则是实例x的一个变量(在python中可以随时为实例添加变量)
def __init__(self,time0):
time.members=time0
>>> a=time(10)
>>> a.members
10
>>> b=time(20)
>>> b.members
20
>>> a.members
20
4、继承:格式 class 类名(要继承类的名列表):
class time:
def __init__(self,time):
self.time=time
def printtime(self):
print 'the time is %d ' % self.time
class car:
def __init__(self,speed):
self.speed=speed
def printspeed(self):
print 'speed is %d' % self.speed
class plane(time,car):
def __init__(self,time,speed):
self.time=time
self.speed=speed
def printdistance(self):
x=self.speed*self.time
print 'cross distance is %d' % x
>>> a=plane(20,60)
>>> a.printdistance()
cross distance is 1200
>>> a.printspeed()
speed is 60
>>> a.printtime()
the time is 20
5、调用父类的初始化函数,格式为:父类名.__init__(self,参数列表)
class time:
def __init__(self,time):
self.time=time
def printtime(self):
print 'the time is %d ' % self.time
class car:
def __init__(self,speed):
self.speed=speed
def printspeed(self):
print 'speed is %d' % self.speed
class plane(time,car):
def __init__(self,time0,speed):
time.__init__(self,time0)
car.__init__(self,speed)
def printdistance(self):
x=self.speed*self.time
print 'cross distance is %d' % x
>>> a=plane(10,20)
>>> a.speed
20
>>> a.time
10
6、异常处理:
try:
print 1
except: #若try出错则执行该语句
print 'some error was happend'
else: #可以没有的操作, 若try没有出错则执行该语句
print 'that is not error'
finally: #可以没有的操作, 无论有无出错都将执行的语句
print 'Done'