python的入门19

类的组合

类的组合是指在新创建的类中包含有已有类的对象作为其属性。
类的组合(composition)是类的另一种重用方式。如果程序中的类需要使用其他类的对象,就可以使用类的组合方式。组合关系可以用“has-a”关系来表达,就是一个主类中包含其他对象。

1、第一种组合方法

在这里插入图片描述

输出结果为:

在这里插入图片描述

在第一种方法中,在Computer类的初始化方法中分别传递显示器尺寸displaySize和内存大小memorySize给两个组合对象所属类的初始化方法,在组合类Computer中创建被组合的对象。

注:

  • 上面的class computer中的 self.display就是创建了一个display的属性

  • 在上面的代码中,Computer 类有两个属性 display 和 memory它们分别是 Display 和 Memory 类的实例。Display 类有一个属性 size,而 Memory 类也有一个属性 size。

  • 当你使用 d.display.size 和 d.memory.size 时,它们分别访问了 Computer 对象 d 的 display 和 memory 属性,并且获取了对应的 size 属性的值,然后将这些值打印出来。

2、第二种类的组合

第二种方法是在主程序中创建被组合类的对象,然后将这些对象传递给组合类。
在这里插入图片描述

输出结果为:

在这里插入图片描述
注:在第二种方法中,组合类的初始化方法参数由两个被组合类的对象组成。因此,在主程序中需要预先创建被组合对象,然后将这些对象作为参数传递给组合类的初始化方法,最终赋值给组合类的对象属性。

  • 在这段代码中,if name == “main”: 语句块包含了 main() 函数的调用,这意味着只有当该文件作为主模块直接运行时,才会执行 main() 函数。如果该文件被其他模块导入,main() 函数不会自动执行。

  • 在Python中,if name == “main”: 是一个常见的约定用法。它判断当前模块是否是被直接运行的主模块,而不是被作为其他模块的导入模块。

  • 当一个Python文件作为主模块直接运行时,name 的值将被设置为字符串 “main”,而当它被导入为一个模块时,name 的值将是模块的名称。

  • 因此,通过使用 if name == “main”: 条件判断,你可以指定在该模块被直接运行时要执行的特定代码块。这样可以将一些测试代码或者需要在模块作为主程序运行时执行的逻辑隔离开来,而不会在该模块被导入时自动执行。

3、继承与组合的结合

class Student(object):
    def __init__(self, num):
        self.num = num

class Teacher(object):
    def __init__(self, num):
        self.num = num

class School(object):
    def __init__(self, num1, num2):
        self.student = Student(num1)
        self.teacher = Teacher(num2)

school = School(100, 10)
print(school.student.num, school.teacher.num)

输出结果为:
在这里插入图片描述
上面的类都继承了object类,object类是使用类的父类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值