#一、创建Dog类 class Dog(): #每当你根据Dog类创建新实例,Python都会自动运行它,开头和末尾各有两个下划线,这时一种约定,避免和其他方法名混淆 #形参self必不可少,必须位于前面,Python调用_init_来创建实例是,将自动传入实参self,让实例能够访问类中的方法和属性 #self会自动传递,因此我们不需要传递它,但需给name和age两个形参传值 def __init__(self,name,age): self.name=name self.age=age def sit(self): print(self.name) def roll_over(self): print(self.name) #二、根据类创建实例 #Python使用实参Tom和16调用Dog类中的方法_init_()创建一个表示特定小狗的示例,并使用用户传的值来设置属性name和age #方法_init_并未显示地包含return语句,但Python会自动返回一个表示小狗的实例,我们将这个实例存储在my_dog中, #my_dog指的是根据类创建的实例 my_dog=Dog('Tom',8) print(my_dog.name) print(str(my_dog.age)) #Python先找到实例my_dog,再查找与这个实例相关联的属性name #根据Dog类创建实例后,就可以使用.来调用Dog类中定义的方法
#三、给属性指定默认值 #类中每个属性都必须有初始值,哪怕这个值是0或空字符串,如果在方法_init_中设置了某个属性的初始值,就不需包含为他提供初值的 class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year=year self.odometer=0 def get_name(self): long_name=str(self.year)+self.make+self.model return long_name.title() def read_odometer(self): print(str(self.odometer)) my_car = Car('ggg','t5',2055) print(my_car.get_name()) my_car.read_odometer()
#四、修改属性的值 #1.直接修改属性的值 #要修改属性的值,最简单的方法是通过实例直接访问它 class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year=year self.odometer=0 def get_name(self): long_name=str(self.year)+self.make+self.model return long_name.title() def read_odometer(self): print(str(self.odometer)) my_car = Car('ggg','t5',2055) print(my_car.get_name()) my_car.odometer=23 #通过句点来直接访问并设置属性odometer为23 my_car.read_odometer() #2.通过方法修改属性的值 #如果有替你更新属性的方法,你就无需直接访问属性,而可将值传递给一个方法,由它在内部进行更新 class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year=year self.odometer=0 def get_name(self): long_name=str(self.year)+self.make+self.model return long_name.title() def read_odometer(self): print(str(self.odometer)) def updata_odometer(self,mileage): self.odometer=mileage my_car=Car('da','r4','3333') print(my_car.get_name()) my_car.updata_odometer(33) my_car.read_odometer()
#五、继承 #子类继承其父类的所有属性和方法,同时还可以定义自己的属性和方法 #1.子类方法的__init__() class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer = 0 def get_name(self): long_name = str(self.year)+self.make+self.model return long_name.title() def read_odometer(self): print(str(self.odometer)) def update_odometer(self, mileage): if mileage>= self.odometer: self.odometer = mileage else: print("warning") def increment_odometer(self, miles): self.odometer += miles class ElectricCar(Car): #继承Car类 def __init__(self, make, model, year): super().__init__(make, model, year) my = ElectricCar('dada','aaf',777) print(my.get_name()) #创建子类时父类必须包含在当前文件中,且位于子类前 #定义子类时必须在括号内指定父类名 #子类中第一个__init__方法接受Car实例所需的信息 #super()是一个特殊函数,帮助Python将父类和子类关联起来,让ElectricCar实例包含父类的所有属性,父类也称为超类(superclass)
参考:《Python编程:从入门到实践》,本书作者Eric Matthes,译者袁国忠,由人民邮电出版社于2016年7月出版