You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何关联多个类,使类实例拥有其他类的属性?

学生数据类关联及筛选实现方案

类关联方法

你可以新增一个Student聚合类,将已有的personal_info、date_of_birth、grades三个独立类的实例作为属性传入,即可让学生实例同时拥有三类属性,无需修改原有类的代码。
假设你现有三个类的结构如下:

  • date_of_birth类:包含年、月、日三个属性
  • personal_info类:包含姓名、性别等基础属性,内置date_of_birth类实例存储出生日期
  • grades类:包含数学、英语、科学三个科目成绩属性

聚合Student类代码示例

class Student:
    def __init__(self, personal_info_instance: personal_info, grades_instance: grades):
        # 关联个人信息实例(已内置出生日期数据)
        self.personal_info = personal_info_instance
        # 关联成绩实例
        self.grades = grades_instance

筛选功能实现

筛选逻辑代码

筛选数学成绩高于英语成绩、且低于科学成绩的学生,代码如下:

def filter_target_students(student_list: list[Student]):
    matched_students = []
    for student in student_list:
        math = student.grades.math
        english = student.grades.english
        science = student.grades.science
        # 匹配筛选条件
        if math > english and math < science:
            matched_students.append(student)
    
    # 打印符合条件的学生信息
    for stu in matched_students:
        print(f"姓名:{stu.personal_info.name}")
        print(f"出生日期:{stu.personal_info.date_of_birth.year}年{stu.personal_info.date_of_birth.month}月{stu.personal_info.date_of_birth.day}日")
        print(f"成绩:数学{stu.grades.math},英语{stu.grades.english},科学{stu.grades.science}\n")

调用示例

# 1. 构造单条学生数据示例
# 实例化出生日期
dob = date_of_birth(2005, 8, 21)
# 实例化个人信息
p_info = personal_info("李四", dob, "女")
# 实例化成绩
scores = grades(90, 82, 95)
# 实例化学生对象
student = Student(p_info, scores)

# 2. 构造学生列表并调用筛选方法
all_students = [student, ...] # 填入所有学生实例
filter_target_students(all_students)

内容的提问来源于stack exchange,提问作者Luca Marinescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:36:00