学习目标
- 理解面向对象编程的基本概念
- 掌握类和对象的定义和使用
- 学习属性和方法的定义和使用
- 理解继承和多态的概念
- 学习类的特殊方法
学习内容
1. 面向对象编程基本概念
面向对象编程(OOP)是一种编程范式,使用“对象”来设计应用程序和计算机程序。对象是类的实例,类是创建对象的蓝图。
2. 定义类和创建对象
-
定义类:
class ClassName:def __init__(self, param1, param2):self.attr1 = param1self.attr2 = param2
-
创建对象:
obj = ClassName(value1, value2)
-
示例:
class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} is barking")my_dog = Dog("Buddy", 3)
print(my_dog.name) # 输出: Buddy
print(my_dog.age) # 输出: 3
my_dog.bark() # 输出: Buddy is barking
3. 属性和方法
- 属性(Attributes): 类中的变量。
- 方法(Methods): 类中的函数。
示例解析
__init__
方法是一个特殊方法,在创建对象时自动调用,用于初始化对象的属性。self
参数是指向当前对象的引用,必须作为第一个参数传递。
4. 继承和多态
-
继承(Inheritance): 一个类(子类)可以继承另一个类(父类)的属性和方法。
class Animal:def __init__(self, name):self.name = namedef speak(self):passclass Dog(Animal):def speak(self):return f"{self.name} says Woof!"class Cat(Animal):def speak(self):return f"{self.name} says Meow!"my_dog = Dog("Buddy")
my_cat = Cat("Kitty")
print(my_dog.speak()) # 输出: Buddy says Woof!
print(my_cat.speak()) # 输出: Kitty says Meow!
-
多态(Polymorphism): 不同类的对象可以通过相同的接口调用,表现出不同的行为。
示例解析
Dog
和Cat
类继承自Animal
类,并重写了speak
方法。
5. 类的特殊方法
-
__str__
方法: 返回对象的字符串表示。
class Dog:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"{self.name} is {self.age} years old"my_dog = Dog("Buddy", 3)
print(my_dog) # 输出: Buddy is 3 years old
-
__len__
方法: 返回对象的长度。
class MyList:def __init__(self, items):self.items = itemsdef __len__(self):return len(self.items)my_list = MyList([1, 2, 3, 4])
print(len(my_list)) # 输出: 4
今日任务
-
定义类和创建对象:
- 定义一个表示汽车的类
Car
,具有make
、model
和year
属性。 - 创建一个
Car
对象并打印其属性。
- 定义一个表示汽车的类
-
属性和方法:
- 为
Car
类添加一个方法description
,返回汽车的描述。 - 调用
description
方法并打印结果。
- 为
-
继承和多态:
- 定义一个表示电动车的类
ElectricCar
,继承自Car
类,添加battery_size
属性。 - 为
ElectricCar
类添加一个方法describe_battery
,返回电池描述。 - 创建一个
ElectricCar
对象,调用description
和describe_battery
方法并打印结果。
- 定义一个表示电动车的类
-
类的特殊方法:
- 为
Car
类添加__str__
方法,返回汽车的字符串表示。 - 打印
Car
对象,查看输出结果。
- 为
-
编写并运行以下示例代码:
# 定义Car类 class Car:def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yeardef description(self):return f"{self.year} {self.make} {self.model}"def __str__(self):return self.description()# 创建Car对象 my_car = Car("Toyota", "Corolla", 2020) print(my_car) # 输出: 2020 Toyota Corolla print(my_car.description()) # 输出: 2020 Toyota Corolla# 定义ElectricCar类,继承自Car class ElectricCar(Car):def __init__(self, make, model, year, battery_size):super().__init__(make, model, year)self.battery_size = battery_sizedef describe_battery(self):return f"This car has a {self.battery_size}-kWh battery."# 创建ElectricCar对象 my_electric_car = ElectricCar("Tesla", "Model S", 2021, 100) print(my_electric_car) # 输出: 2021 Tesla Model S print(my_electric_car.describe_battery()) # 输出: This car has a 100-kWh battery.