面向对象 组合
'对象.属性 = 另一个对象'
目的: 解决类与类之间的代码冗余问题
1.继承:满足什么是什么的关系,is-a的关系
2.组合:组合表达是has-a关系: 一个对象拥有一个属性,该属性值指向另外一个对象
eg:
class Foo():
def __init__(self, m):
self.m = m
class Bar():
def __init__(self, n):
self.n = n
obj = Foo(10)
obj1 = Bar(20)
obj.x = obj1
print(obj.__dict__)
class People():
school = 'SS'
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
class Admin(People):
pass
class Course():
def __init__(self, name, period, price):
self.name = name
self.period = period
self.price = price
python = Course('python', '6mon', 2000)
linux = Course('linux', '5mon', 3000)
class Student(People, Course):
def __init__(self, name, age, gender, course=None):
if course is None:
course = []
self.courses = course
super().__init__(name, age, gender, )
def choose_course(self, stu_obj, course):
stu_obj.courses.append(course)
stu = Student('gary', 20 , 'male')
stu.courses.append(python)
stu.courses.append(linux)
for course in stu.courses:
print(course.price)
print(course.name)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)