classCar():def__init__(self,make,model,year):#定义属性
self.make = make
self.model = model
self.year = year
self.odometer_reading =0defget_descriptive_name(self):
long_name =str(self.year)+' '+self.make+' '+self.model
return long_name.title()defread_odometer(self):print('this car has '+str(self.odometer_reading)+'miles on it.')defupate_odometer(self,mileage):if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:print("You can't roll back an odometer")deffill_gas_tank(self):print("This car has a gas tank")defincrement_odometer(self,miles):
self.odometer_reading += miles
classElectricCar(Car):#圆括号中必须指定父类的名称,子类继承了其父类的所有属性和方法def__init__(self,make,model,year):#初始化父类的属性super().__init__(make,model,year)#在pyton 2 中super()圆括号中应加上类名和self#添加新属性
self.battery_size =70#添加方法defdescribe_battery(self):#打印一条描述电瓶容量的信息print("This car has a "+str(self.battery_size)+"-kwh battery.")#重写父类的方法#父类中有"fill_gas_tank"方法,但是电动汽车没有油箱,所以重写deffill_gas_tank(self):print("This car doesn't need a gas tank")
my_tesla = ElectricCar('tesla','model s',2018)print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
my_tesla.fill_gas_tank()print('*******************')#将实例用作属性classBattery():def__init__(self,battery_size=70):
self.battery_size = battery_size
defdescribe_battery(self):print("This car has a "+str(self.battery_size)+"-kwh battery")classElectricCar(Car):#子类继承了其父类的所有属性和方法def__init__(self,make,model,year):#初始化父类的属性super().__init__(make,model,year)
self.battery=Battery()
My_tesla=ElectricCar('tesla','model s',2017)
My_tesla.battery.describe_battery()#调用实例中的方法
deffunc():print("hello world!")defdeco(func):#定义一个装饰器definner():print("********")
func()return inner
f=deco(func)#f是装饰以后的函数
f()print('*****************************')#带有参数的修饰器#方法一defsay(age):print("fang is %d years old"%age)defdeco(func):definner(age):if age<0:
age=0
func(age)return inner
say=deco(say)
say(19)#方法二
@deco
defsay(age):print("fang is %d years old"%age)
say(18)#带有不定参数的修饰器defdeco(func):definner(*arcg,**kwargs):print('***********')
func(*arcg,**kwargs)return inner
@deco
defsay(name,age):print("my name is %s,i am %d years old"%name%age)
say('fang',19)
函数
add_args(arg2='i jie',arg1='fang we')#默认参数defdescrible_pet(pet_name,animal_type='dog'):print('my '+animal_type+' name is '+pet_name)
describle_pet('kiki')
describle_pet('zaocai','cat')#不定长参数defmake_pizza(*toppings):#*创建一个空元组,并将函数收到的所有实参封装到这个元祖中print(toppings)
make_pizza('cheese')#返回一个元组
make_pizza('mushrooms','green peppers','cheese')defmake_pizza2(size,*toppings):print('Making a '+str(size)+' pizza with the folling topping:')for topping in toppings:print('-'+topping)
make_pizza2(12,'mushrooms','green peppers','cheese')#任意数量的关键字实参deffunc(**k):# ** 创建一个空字典,用于储存(键-值)对print(k)print(type(k))dict=func(num1=19,str1='name',num2=13,str2='cool')#匿名函数sum=lambda num1,num2,num3:(num1+num2)*num3
print(sum(2,2,3))
path='E:\pycharm project\.idea/newfile/fang.py'str='fangweije is a great man'withopen(path,'wb')asfile:file.write(str.encode('gbk'))withopen(path,'rb')as file2:
data=file2.read()print(data)print(data.decode('gbk'))
异常处理
#使用try和except处理错误
short_list=[1,2,3]
pos=6try:print(short_list[pos])except:#try中语句被执行,若存在错误,就会抛出异常,然后执行except中的代码print('list index out of range')#有时需要除了异常外的其他的异常细节
short_list=[1,2,3]
pos=6try:print(short_list[pos])except IndexError as err:#将一个IndexError异常赋给变量err,其中IndexError就是错误类型print('Bad index:',pos)print('cause of error:',err)except Exception as other:#把其他异常赋给otherprint('something else broke:',other)#编写自己的异常#即自己定义异常类型