Python继承(Python2和Python3区别)
类的继承:
#在Python3中可以从空创建父类:
class Car():
def __init__(self,make,model,year):
……
class ElectriCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
在Python2.7中:
class Car(object):
def __init__(self,make,model,year):
……
class ElectriCar(Car):
def __init__(self,make,model,year):
super(ElectriCar, self).__init__(make,model,year)
如果class Car():即从空创建则会报出
TypeError: super() argument 1 must be type, not classobj的错误。
Python2.7继承的例子
class Car(object):
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer=36
def descriptive(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
print long_name.title()
return long_name.title()
def update_odometer(self,milage):
if milage>=self.odometer:
self.odometer=milage
else:
print "You can't roll back an odometer."
def read_odometer(self):
print "This car has "+str(self.odometer)+" miles on it."
def increment(self,miles):
self.odometer+=miles
class ElectriCar(Car):
def __init__(self,make,model,year):
super(ElectriCar, self).__init__(make,model,year)
my_tesla=ElectriCar('tesla','model',2016)
my_tesla.descriptive()
用import时
class Car(object):
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer=36
def descriptive(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
print long_name.title()
return long_name.title()
def update_odometer(self,milage):
if milage>=self.odometer:
self.odometer=milage
else:
print "You can't roll back an odometer."
def read_odometer(self):
print "This car has "+str(self.odometer)+" miles on it."
def increment(self,miles):
self.odometer+=miles
#定义新类,并在新类中创建实例
#coding=utf-8
#文件功能:
import car1
class ElectriCar(car1.Car):
def __init__(self,make,model,year):
super(ElectriCar,self).__init__(make,model,year)
my_new_car=ElectriCar('audo','a4',2016)
my_new_car.descriptive()