一个类的对象作为另一个类的对象的属性,称为类的组合。

即 class1.instance1.property = class2.instance

组合也是代码重用的重要方式之一。

先定义三个类:人、汽车、手机

 class Person:
def __init__(self,name,sex,age,position):
self.name = name
self.sex = sex
self.age = age
self.position = position
class Car:
def __init__(self,brand,price,color):
self.brand = brand
self.price = price
self.color = color
class Phone:
def __init__(self,brand):
self.brand = brand
def call_up(self):
print("I'm calling you...")

定义类

对于这三个类来说,各自独立又有联系,人可以拥有手机,人也可以拥有一辆汽车。

用代码来表现之间的联系

 jack = Person('jack','male',35,'Manager')   #实例化一个人
jack.car= Car(brand = 'Cadillac',price = 200000,color = 'Red') #给人新增一个车的属性,即人可以拥有一辆车,并实例化一辆车,再赋值给属性
jack.phone = Phone('SamSung') #原理同上

把对象赋值给属性

属性与方法的调用

 print(jack.car.brand)   #注意属性之间的调用写法顺序
print(jack.car.color)
print(jack.car.price)
print(jack.phone.brand) jack.phone.call_up() #调用方法 Cadillac
Red
200000
SamSung
I'm calling you...

属性与方法的调用

最新文章

  1. 修改Centos 6.5的yum源
  2. commons-lang包中我们常用的类的作用
  3. python 环境安装
  4. Java基础——I/O
  5. Java学习----类的组织(包)
  6. MVC 无法将类型“System.Collections.Generic.List<AnonymousType#1>”隐式转换为“System.Collections.Generic.IList<Mvc3Modeltest.Models.Movie>”。存在一个显式转换(是否缺少强制转换?))
  7. Linq To sql入门练习 Lambda表达式基础
  8. Vue.js01:跑马灯效果
  9. 酷痞运行于openwrt路由系统
  10. 总结,为什么要重写hashset的hashcode()和equals()?
  11. npm install报错Unhandled rejection RangeError: Maximum call stack size exceededill install
  12. 小D课堂【SpringBoot】接口Http协议开发实战
  13. oracle系统视图字段说明
  14. CPU线程 和 Java线程
  15. 支持向量机通俗导论(理解SVM的三层境界) by v_JULY_v
  16. http协议----->http请求方式,post,get
  17. repo相关命令
  18. ui_modules和ui_method
  19. 大话设计模式--工厂模式 factory -- C++实现实例
  20. [ Database ] [ SQL Server ] SQL Server 很多不允許的操作解決方法

热门文章

  1. SpringBoot:静态资源映射、定制404、配置icon
  2. 【Linux基础总结】Shell 基础编程
  3. shell 条件结构之 if 语句使用总结
  4. vue省市区三级联动(高仿京东)
  5. es6中 var 和 let的区别
  6. [hdu4609]计数方法,FFT
  7. [hdu5164]ac自动机
  8. 一文带你了解Spring核心接口Ordered的实现及应用
  9. Python实现将网站域名解析为ip地址
  10. Rasa init报错:AttributeError: type object 'Callable' has no attribute '_abc_registry'