一、类与类之间的关系
    
    1、依赖关系

 class Elephant:

     def __init__(self, name):
self.name = name def open(self, ref): # 想要的是一个冰箱。 是哪个冰箱没有制定
print("冰箱哥哥, 开门把")
ref.open_door() def close(self, ref): # 依赖关系
print("冰箱哥哥, 我进来了。 关门把")
ref.close_door() def jin(self):
print("进冰箱装自己") class Refrigerator: def open_door(self):
print("冰箱陌陌的打开了自己的门")
def close_door(self):
print("冰箱陌陌的关上了自己的门 ") # class GaoYaGuo:
# def open_door(self):
# print("冰箱陌陌的打开了自己的门")
# def close_door(self):
# print("冰箱陌陌的关上了自己的门 ") alex = Elephant("李杰")
bx1 = Refrigerator() #
alex.open(bx1)
alex.jin()
alex.close(bx1)
object

2、关联关系

 # class Boy:
# def __init__(self, name, xingge, girlFriend=None):
# self.name = name
# self.xingge = xingge
# self.girlFriend = girlFriend
#
# def yujian(self, girl):
# self.girlFriend = girl
#
# def chi(self):
# if self.girlFriend:
# print("随便池! %s 和 %s" % (self.name, self.girlFriend.name))
# else:
# print("单身狗, 池什么池?")
#
# class Girl:
# def __init__(self, name, boyFriend):
# self.name = name
# self.boyFriend = boyFriend
# def chi(self):
# print("%s在吃饭" % self.name)
#
# girl = Girl("白骨精")
#
# alex = Boy("金王", "娘")
# alex.chi()
#
# alex.yujian(girl)
# alex.chi()
#
# # 找到alex的女朋友
# # alex.girlFriend.name
# alex.girlFriend.chi() # 一个对多个. class School:
def __init__(self, name, address, phone):
self.name = name
self.address = address
self.phone = phone
self.__teach_list = [] def zhaopin(self, t):
self.__teach_list.append(t) def display(self):
for el in self.__teach_list:
print(el.name, el.hobby) class Teacher:
def __init__(self, name, gender, salary, hobby, school):
self.name = name
self.gender = gender
self.salary = salary
self.hobby = hobby self.school = school oldboy_bj = School("北京老男孩", "美丽富饶的沙河", "")
oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "")
oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "") t1 = Teacher("配齐", "男", 200000, "上课", oldboy_bj)
t2 = Teacher("太白", "男", 150000, "开车", oldboy_bj)
t3 = Teacher("Eggon", "男", 123456, "钻研技术", oldboy_sh)
t4 = Teacher("高鑫", "女", 45678, "相夫教子", oldboy_sz)
t5 = Teacher("日天", "男", 666, "看天", oldboy_sz) # print(t3.school.address) # 找到老师所在的学校的地址 oldboy_bj.zhaopin(t1)
oldboy_bj.zhaopin(t2)
oldboy_bj.display() oldboy_sh.zhaopin(t3) oldboy_sz.zhaopin(t4)
oldboy_sz.zhaopin(t5) oldboy_sz.display()

3、类名与对象是否可作为key

 # 可哈希. 内部是否哈希算法 __hash__

 # class Foo(object): # 所有的类都会默认继承object
# def __init__(self):
# pass
# def func(self):
# pass
# __hash__ = None
#
# dic = {}
# dic[Foo] = "123456" # 类名是可哈希的。
# dic[Foo()] = "刘伟" # 类中是否包含__hash__
# print(dic) # 默认的类和对象都是可哈希的 # class Base:
# def __init__(self, num):
# self.num = num
#
# def func1(self):
# print(self.num)
#
# class Foo(Base):
# pass
#
# obj = Foo(123)
# obj.func1() # 123 # class Base:
# def __init__(self, num):
# self.num = num
# def func1(self):
# print(self.num)
#
# class Foo(Base):
# def func1(self):
# print("Foo. func1", self.num)
#
# obj = Foo(123)
# obj.func1() # ???? Foo. func1 123 #
# class Base:
# def __init__(self, num):
# self.num = num
# def func1(self):
# print(self.num)
# self.func2()
# def func2(self):
# print("Base.func2")
#
# class Foo(Base):
# def func2(self):
# print("Foo.func2")
#
# obj = Foo(123)
# obj.func1() # 123 # class Base:
# def __init__(self, num):
# self.num = num
#
# def func1(self):
# print(self.num)
# self.func2()
#
# def func2(self):
# print(111, self.num)
#
# class Foo(Base):
# def func2(self):
# print(222, self.num)
#
# lst = [Base(1), Base(2), Foo(3)]
# for obj in lst:
# obj.func2() # class Base:
# def __init__(self, num):
# self.num = num
#
# def func1(self):
# print(self.num)
# self.func2()
#
# def func2(self):
# print(111, self.num)
#
# class Foo(Base):
# def func2(self):
# print(222, self.num)
#
# lst = [Base(1), Base(2), Foo(3)]
# for obj in lst:
# obj.func1() #
# 111 1
#
# 111 2
#
# 222 3 # 总结: self当前访问xx方法的那个对象

18_python_类关系的更多相关文章

  1. 【建模】UML类关系分析

    一.UML类关系分析 1.关联(asociation) 一般是一方拥有另一方对象的指针.箭头的方向是访问方向. 2.聚合(Aggregation)和组合(Composition) 聚合和关联一般不做区 ...

  2. 设计模式基础:类及类关系的UML表示

    设计模式基础:类及类关系的UML表示 2009-10-26 17:00 by 宗哥, 1891 阅读, 1 评论, 收藏, 编辑 UML中,类关系分为这几种,泛化(generalization), 实 ...

  3. 面向对象的类关系及其C++实现

    在面向对象的程序设计中,类之间有6中关系,分别是继承, 组合, 聚合,关联, 依赖,实现,如果使用C语言实现,上面的这些关系通过"结构体包含结构体.结构体包含结构体指针以及函数指针等语法实现 ...

  4. UML类关系(依赖,关联,聚合,组合,泛化,实现)

    转自https://blog.csdn.net/k346k346/article/details/59582926   在学习面向对象设计时,类关系涉及依赖.关联.聚合.组合和泛化这五种关系,耦合度依 ...

  5. [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射

    此特性需要安装Kogel.Dapper.Mssql或者Oracle 3.06及以上版本,实体类层需要安装Kogel.Dapper.Extension 3.06及以上版本 目录 [LINQ2Dapper ...

  6. UML 类关系及画法

    1 泛化 [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向 ...

  7. uml类关系

    类间的关系:http://www.open-open.com/lib/view/open1328059700311.html 泛化 . 实现 . 关联 . 组合 . 聚合 . 依赖 泛化是继承类,实现 ...

  8. QML控件类关系图

    花了点时间整理了下QML控件之间的关系图和QML控件和C++类的对应关系,基于Qt5.6版本 其他版本可能会有差异 图片像素比较大,另存为后放大图片就可以看清楚了 工程下载地址 QMLClassDia ...

  9. Android Multimedia框架总结(四)MediaPlayer中从Java层到C++层类关系及prepare及之后其他过程

    转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52420803 前言:在上篇中,分析了MediaPl ...

随机推荐

  1. 【NIFI】 开发自定义Nifi Processor

    本例需要基础知识:[NIFI] Apache NiFI 安装及简单的使用 Nifi不光可以使用自带的Processor,还可以自定义Processor.本例简单介绍开发一个Processor 开发 1 ...

  2. 买铅笔(NOIP2016)

    先给题目链接:买铅笔 这题非常水,没啥可分析的,先给代码: #include<bits/stdc++.h> //1 using namespace std; int main(){ int ...

  3. 使用hibernate从一方获取多方信息时报错:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role

    引起原因:hibernate加载关联对象的方式有懒加载方式和立即加载方式. 如果在多对一的配置中没有指定加载方式,而一对多的配置中指定了懒加载方式,因此在获取一方是可获取到值,而获取多方时sessio ...

  4. oracle死锁解决方法

    select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME,      AO.OBJECT_NAME, LO.LOCKED_M ...

  5. js判断 pc 手机 浏览器

    <script> var result = window.matchMedia('(max-width: 700px)'); var browser={ versions:function ...

  6. 2018-04-11 activity周期

    android相机开发 1.Android wifi热点连接过程 2.bindservice和AIDLhttps://blog.csdn.net/zhou_wenchong/article/detai ...

  7. Python爬虫防封杀方法集合

      Python爬虫防封杀方法集合     mrlevo520 2016.09.01 14:20* 阅读 2263喜欢 38       Python 2.7 IDE Pycharm 5.0.3 前言 ...

  8. 20155326 实验四 Android程序设计实验报告

    20155326 实验四 Android程序设计实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3. ...

  9. 查看和杀死进程ps

    $ps -ef #查看执行的进程. $ps -aux | grep java #查看java进程 $sudo kill 进程号 [1] http://www.cnblogs.com/peida/arc ...

  10. java基础-day27

    第04天 java基础加强 今日内容介绍 u Xml的综合案例 u 注解 u 类的加载 u 动态代理 第1章   注解 1.1  注解概述 l  什么是注解:Annotation注解,是一种代码级别的 ...