python 类 10
1.创建和使用类
#在python中,首字母大写的名称指的是类 class Dog: #定义方法,该方法是一个特殊方法,每当Dog类创建新实例时,python都会自动运行它 #这个方法的名称中,开头和末尾各有两个下划线,这是一种约定。 #self是必须的形参,指本身实例的引用 def __init__(self,name,age): #定义属性__init__ self.name=name self.age=age #定义普通的方法,有一个形参self def sit(self): print(f"{self.name}is now sitting") def rool_over(self): print(f"{self.name} rolled over") #创建一个实例 my_dog=Dog('Willie',6) print(f"My dog's name is {my_dog.name}.") print(f"My dog is {my_dog.age} years old.") my_dog.sit() my_dog.rool_over()
2.继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类称为子类。子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。
class Car: def __init__(self, make,model,year): self.make = make self.model=model self.year=year self.odometer_reading=0 def get_descriptive_name(self): long_name=f"{self.year}{self.make}{self.model}" return long_name.title() def read_odometer(self): print(f"This car has {self.odometer_reading} miles on it.") def update_odometer(self,mileage): if mileage>=self.odometer_reading: self.odometer_reading=mileage else: print("You can't roll back an odometer!") def increment_odometer(self,miles): self.odometer_reading += miles #电动汽车, 继承了Car class ElectricCar(Car): def __init__(self, make,model,year): #初始化父类的属性 super().__init__(make,model,year) my_tesla=ElectricCar('tesla','model s',2019) print(my_tesla.get_descriptive_name())
3.重写
#电动汽车, 继承了Car class ElectricCar(Car): def __init__(self, make,model,year): #初始化父类的属性 super().__init__(make,model,year) self.battery_size=75 #重写 def get_descriptive_name(self): long_name=f"{self.year}{self.make}{self.model}{self.battery_size}" return long_name.title()
4.将实例用作属性
#电动汽车, 继承了Car class ElectricCar(Car): def __init__(self, make,model,year): #初始化父类的属性 super().__init__(make,model,year) #将实例用作属性 self.battery=Battery() class Battery: def __init__(self, battery_size=75): self.battery_size=battery_size def describe_battery(self): print(f"This car has a {self.battery_size}-kWh battery.") my_tesla = ElectricCar('tesla', 'model s', 2019) print(my_tesla.get_descriptive_name()) #调用 my_tesla.battery.describe_battery()