类(py)

发布时间 2023-11-19 23:50:50作者: Dita

创建和使用类

class Dog:
    def __init__(self, name, age):
             self.name = name
             self.age = age
    def sit(self):
           print(self.name.title() + "is now sitting")
    def roll_over(self):
           print(self.name.title() + "rolled over!")

my_dog = Dog('willie', 6)
my_dog.sit()
my_dog.roll_over()
print("my dog's name is " + my_dog.name.title() + ".")
print("my dog's name is ", str(my_dog.age) + ".")

给属性指定默认值

直接在类里面给出属性默认值就好

修改属性值:

方法1:直接将实例化的属性修改
方法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 = str(self.year) + ' ' + self.make + ' ' + self.model
          return long_name
    def read_odometer(self):
          print("This car has " + str(self.odometer_reading) + "miles on it.")
    def update_odometer(self, mileage):
          if mileage > self.odometer_reading:
                self.odometer_read = mileage
          else:
                print("You can't roll back on odometer!")
    def increment_odometer(self, miles):
          self.odometer_reading += miles
                 
class ElectricCar(Car):
      def __init__(self, make, model, year):
            super().__init__(make, model, year)
            self.battery_size = 70
      def describe_battery(self):
            print("This car has a" + str(self.battery_size) + "-kwh battery")

my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())

my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

my_tesla.describe_battery()

将实例用作属性

当一个类的内容很多了,可以将类的一部分提取出来拆成若干个协同工作的小类

class Battery():
      def __int__(self, battery_size = 70):
            self.battery_size = battery_size
      def describe_battery(self):
            print("This car has a" + str(self.battery_size) + "-kwh battery")
            
class ElectricCar(Car):
      def __init__(self, make, model, year):
            super().__init__(make, model, year)
            self.battery = Battery()

my_tesla.battery.describe_battery()

将电池这个属性分离出去,单独创建一个类,那么这个电动汽车这个电池这个属性就是一个类

class Battery():
      def __init__(self, battery_size = 70):
            self.battery_size = battery_size
      def describe_battery(self):
            print("This car has a " + str(self.battery_size) + "-kwh battery")
      def get_range(self):
            if self.battery_size == 70:
                  range = 240
            elif self.battery_size == 85:
                  range = 270
            message = "This car can go approximately " + str(range)
            message += "miles on a full charge. "
            print(message)      
class ElectricCar(Car):
      def __init__(self, make, model, year):
            super().__init__(make, model, year)
            self.battery = Battery()

my_tesla.battery.get_range()

导入类

通俗点就是运用另一个程序中的类,减少代码冗余

  • 导入单个的类

car.py 是上述代码的 Car 类

my_car.py

from car import Car
    
my_new_car = Car('audiz','a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
  • 导入多个类
from car import Car, ElectricCar
  • 导入整个模块
import car