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()  

 

posted on 2022-12-26 12:24  花阴偷移  阅读(2)  评论(0编辑  收藏  举报

导航