day28 python 类与继承

一、类的基本定义

类是对属性和方法的封装,可以理解为一个模板。通过对模板实例化,我们可以创建出具有相同属性和方法的对象。例如,我们可以定义一个 Teacher 类,然后通过实例化这个类来创建具体的教师对象。

1. 类的定义语法

定义一个类的基本语法如下:

class ClassName:
    # 类的代码块(可以包含属性定义、方法定义等)
    pass  # pass 是一个占位符,表示这里暂时没有任何内容

类名通常遵循大驼峰命名法(UpperCamelCase),即每个单词的首字母都大写。例如,TeacherRandomForest 等。

2. 初始化方法 __init__

初始化方法(也称为构造方法)是一个特殊的函数,用于在创建类的实例时初始化实例的属性。它的定义方式如下:

class Teacher:
    def __init__(self, name, age):
        self.name = name  # 使用 self 来定义类的属性
        self.age = age
        self.subject = "English"  # 这个属性是固定的

__init__ 方法中,self 是一个指向类实例的引用,用于访问类的属性和方法。例如,self.name 表示当前实例的 name 属性。

3. 创建类的实例

通过类名后跟括号的方式,可以创建类的实例:

teacher = Teacher("Susan", 33)
print(teacher.name)  # 输出: Susan
print(teacher.age)   # 输出: 33
print(teacher.subject)  # 输出: English

二、类的普通方法

除了初始化方法,类还可以定义普通方法。普通方法是类的行为逻辑,只有在显式调用时才会执行。

示例:定义普通方法

class Teacher:
    def __init__(self, name, subject, age):
        self.name = name
        self.subject = subject
        self.age = age

    def teach_lesson(self):
        print(f"{self.name}正在教{self.subject}。")

    def criticize(self, student_name):
        print(f"{self.name}正在批评{student_name}。")

# 创建类的实例
teacher = Teacher("Susan", "English", 33)

# 调用普通方法
teacher.teach_lesson()  # 输出: Susan正在教English。
teacher.criticize("John")  # 输出: Susan正在批评John。

三、类的继承

类的继承是面向对象编程的核心概念之一。通过继承,一个子类可以继承父类的属性和方法,从而实现代码复用和功能扩展。子类可以:

  • 复用父类的代码(无需重新实现)。

  • 重写父类的方法(修改或增强功能)。

  • 添加新的方法和属性(扩展功能)。

示例:继承与方法重写

假设我们有一个 Teacher 类,现在我们想定义一个 MasterTeacher 类,它继承自 Teacher 类,并添加一些新的功能。

class Teacher:
    def __init__(self, name, subject, age):
        self.name = name
        self.subject = subject
        self.age = age

    def teach_lesson(self):
        print(f"{self.name}正在教{self.subject}。")

    def criticize(self, student_name):
        print(f"{self.name}正在批评{student_name}。")

# 继承 Teacher 类
class MasterTeacher(Teacher):
    def __init__(self, name, subject, age, experience_years):
        super().__init__(name, subject, age)  # 调用父类的构造方法
        self.experience_years = experience_years  # 添加子类特有的属性

    # 重写父类的方法
    def teach_lesson(self):
        print(f"{self.name}(特级教师)正在用高级方法教授{self.subject}。")

    # 新增子类特有的方法
    def give_lecture(self, topic):
        print(f"{self.name}正在举办关于{topic}的讲座。")

# 创建子类实例
master = MasterTeacher("王教授", "数学", 45, 20)

# 调用继承的方法
master.teach_lesson()  # 输出: 王教授(特级教师)正在用高级方法教授数学。
master.criticize("李同学")  # 输出: 王教授正在批评李同学。

# 调用子类特有的方法
master.give_lecture("微积分")  # 输出: 王教授正在举办关于微积分的讲座。

4. 使用 super() 调用父类方法

在子类中,可以通过 super() 函数调用父类的方法。这在重写父类方法时非常有用,可以保留父类的核心逻辑并在此基础上扩展。

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print(f"{self.name} 发出声音")

class Dog(Animal):
    def speak(self):
        super().speak()  # 调用父类的方法
        print("汪汪叫")  # 添加子类的行为

dog = Dog("旺财", 3)
dog.speak()
# 输出:
# 旺财 发出声音
# 汪汪叫

四、总结

通过类和继承,我们可以实现代码的封装、复用和扩展。类的定义包括初始化方法和普通方法,而继承则允许子类继承父类的属性和方法,并通过方法重写和新增方法来扩展功能。

@浙大疏锦行

你可能感兴趣的:(py,note,python,人工智能,机器学习,pandas,学习)