python3继承使用

目录

  • [1 演示代码](#1 演示代码)

1 演示代码

py 复制代码
import os
import time
import sys
class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def introduce(self):
        print(f"My name is {self.name}, I am {self.age} years old, and I am {self.gender}.")

    def birthday(self):
        self.age += 1
        print(f"Happy birthday! You are now {self.age} years old.")

    def set_gender(self, gender):
        self.gender = gender
        print(f"Gender set to {self.gender}.")

    def set_name(self, name):
        self.name = name
        print(f"Name set to {self.name}.")

    def set_age(self, age):
        self.age = age
        print(f"Age set to {self.age}.")

class Student(Person):
	#不支持写多个init函数。如果有,最后一个才有效。
    def __init__(self, name, age, gender, student_class, grade):
        super().__init__(name, age, gender) #先初始化父类。super()表示当前类的父类对象。
        self.student_class = student_class
        self.grade = grade

    def student_info(self):
        print(f"Student: {self.name}, Age: {self.age}, Gender: {self.gender}, Class: {self.student_class}, Grade: {self.grade}")

    def promote(self):
        self.grade += 1
        print(f"Promoted! Now in grade {self.grade}.")

    def change_class(self, new_class):
        self.student_class = new_class
        print(f"Class changed to {self.student_class}.")

    def set_grade(self, grade):
        self.grade = grade
        print(f"Grade set to {self.grade}.")

    @classmethod
    def from_dict(cls, info_dict):
        #cls表示当前类,谁调用就是谁
        print(f"info_dict = {info_dict}!")
        return cls(**info_dict)


if __name__ == "__main__":
    print("start")
    print("end")
    # 演示Student的初始化和使用,包括调用基类的方法和自己的方法

    # 创建 Student 实例
    # 1. 使用位置参数初始化
    student = Student("Alice", 16, "female", "10A", 10)

    # 2. 通过字典+解包初始化
    student_info = {"name": "Alice", "age": 16, "gender": "female", "student_class": "10A", "grade": 10}
    student2 = Student(**student_info)

    # 3. 使用工厂方法初始化 (如未定义可自己定义)
    # 使用方式
    student3 = Student.from_dict(student_info)

    #4. 使用__init__方法初始化
    student4 = Student(name="Alice", age=16, gender="female", student_class="10A", grade=10)


    # 调用基类(Person)的方法
    student.introduce()
    student.birthday()
    student.set_gender("non-binary")
    student.set_name("Alex")
    student.set_age(17)

    # 调用 Student 自己的方法
    student.student_info()
    student.promote()
    student.change_class("11B")
    student.set_grade(12)
    student.student_info()

代码输出结果为,

txt 复制代码
start
end
info_dict = {'name': 'Alice', 'age': 16, 'gender': 'female', 'student_class': '10A', 'grade': 10}!
My name is Alice, I am 16 years old, and I am female.
Happy birthday! You are now 17 years old.
Gender set to non-binary.
Name set to Alex.
Age set to 17.
Student: Alex, Age: 17, Gender: non-binary, Class: 10A, Grade: 10
Promoted! Now in grade 11.
Class changed to 11B.
Grade set to 12.
Student: Alex, Age: 17, Gender: non-binary, Class: 11B, Grade: 12
相关推荐
MY_TEUCK1 小时前
【Java 后端】SpringBoot 登录认证与会话跟踪实战(JWT + Filter/Interceptor)
java·开发语言·spring boot
QQ2422199791 小时前
基于python+微信小程序的家教管理系统_mh3j9
开发语言·python·微信小程序
沐知全栈开发2 小时前
JavaScript 条件语句
开发语言
RSTJ_16252 小时前
PYTHON+AI LLM DAY THREETY-SEVEN
开发语言·人工智能·python
郝学胜-神的一滴2 小时前
深度学习优化核心:梯度下降与网络训练全解析
数据结构·人工智能·python·深度学习·算法·机器学习
Aision_2 小时前
Agent 为什么需要 Checkpoint?
人工智能·python·gpt·langchain·prompt·aigc·agi
清水白石0082 小时前
《Python性能深潜:从对象分配开销到“小对象风暴”的破解之道(含实战与最佳实践)》
开发语言·python
Je1lyfish2 小时前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
Brilliantwxx2 小时前
【C++】 vector(代码实现+坑点讲解)
开发语言·c++·笔记·算法
野生技术架构师2 小时前
2026年最全Java面试题及答案汇总(建议收藏,面试前看这篇就够了)
java·开发语言·面试