python_面向对象——对象之间的关联关系
1.将类中的对象关联起来(简单的方法)
class Person:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
self.parter = None #先置空,后面赋值(用于关联对象)
def do_private_stuff(self):
pass p1 = Person('wdc',22,'男')
p2 = Person('yhf',23,'女') # 双向绑定,将对象关联起来
p1.parter = p2 #将对象p2复制给对象p1的parter属性
p2.parter = p1 #将对象p1复制给对象p2的parter属性
# 打印对象的parter属性,查看其内容。
print(p1.parter.name,p2.parter.name)
解除关系:
class Person:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
self.parter = None #先置空,后面赋值(用于关联对象)
def do_private_stuff(self):
pass p1 = Person('wdc',22,'男')
p2 = Person('yhf',23,'女') # 双向绑定,将对象关联起来
p1.parter = p2 #将对象p2复制给对象p1的parter属性
p2.parter = p1 #将对象p1复制给对象p2的parter属性
# 打印对象的parter属性,查看其内容。
print(p1.parter.name,p2.parter.name) # 双向接触关联关系
p2.parter = None
p1.parter = None print(p1.parter,p2.parter)
2.将类中对象关联起来(通过类关联)
class Relation:
# 保存对象直接的关系
def __init__(self):
self.couple = [] #创建空列表 def make_couple(self,obj1,obj2):
self.couple = [obj1,obj2] #将传递进来的两个对象保存到同一列表中,关联在一起
print('{}和{}确定了情侣关系...'.format(obj1.name,obj2.name)) def get_my_parter(self,obj):
# 循环列表中的对象,如果不是刚刚传进来的则返回。
for i in self.couple:
if i != obj:
return i
else:
print('你没用对象!')
class Person:
def __init__(self,name,age,sex,relation):
self.name = name
self.age = age
self.sex = sex
self.relation = relation #在每个人的实例中存储关系对象 def do_private_stuff(self):
pass relation_boj = Relation() #创建保存关系的类的对象
p1 = Person('wdc',22,'男',relation_boj)
p2 = Person('yhf',23,'女',relation_boj)
relation_boj.make_couple(p1,p2) #通过对象向方法中传递对象p1和对象p2,让两个人相互关联 p1_obj = p1.relation.get_my_parter(p1) #拿到p1的伴侣的对象(p2)
print('{}的情侣是{}'.format(p1.name,p1_obj.name))
p2_obj = p2.relation.get_my_parter(p2) #拿到p2的伴侣的对象(p1)
print('{}的情侣是{}'.format(p2.name,p2_obj.name))

解除关系:
class Relation:
# 保存对象直接的关系
def __init__(self):
self.couple = [] #创建空列表 def make_couple(self,obj1,obj2):
self.couple = [obj1,obj2] #将传递进来的两个对象保存到同一列表中,关联在一起
print('{}和{}确定了情侣关系...'.format(obj1.name,obj2.name)) def get_my_parter(self,obj):
# 循环列表中的对象,如果不是刚刚传进来的则返回。
for i in self.couple:
if i != obj:
return i
else:
print('你没有对象!') def break_up(self,obj):
print('{}主动解除了关系!'.format(obj.name))
self.couple.clear() #清空列表,解除关系
class Person:
def __init__(self,name,age,sex,relation):
self.name = name
self.age = age
self.sex = sex
self.relation = relation #在每个人的实例中存储关系对象 def do_private_stuff(self):
pass relation_boj = Relation() #创建保存关系的类的对象
p1 = Person('wdc',22,'男',relation_boj)
p2 = Person('yhf',23,'女',relation_boj)
relation_boj.make_couple(p1,p2) #通过对象向方法中传递对象p1和对象p2,让两个人相互关联 p1.relation.break_up(p1) #通过p1解除关系
#或通过p2解除关系:p2.relation.break_up() p1_obj = p1.relation.get_my_parter(p1) #拿到p1的伴侣的对象(p2) p2_obj = p2.relation.get_my_parter(p2) #拿到p2的伴侣的对象(p1)

python_面向对象——对象之间的关联关系的更多相关文章
- python_面向对象——对象间的组合关系
# 由一堆组件构成一个完整的实体,组建本身独立,但又不能自己运行,必须跟宿主组合在一起,运行. class Dog: #狗 def __init__(self,name,dog_type,attack ...
- python_面向对象——类之间的依赖关系
class Dog: def __init__(self,name,age,master): self.name = name self.age = age self.master = master ...
- 2.java面向对象类与类/类与对象之间关系详解
继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- python_面向对象,类名称空间,对象名称空间,组合
创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量(字段) 动态属性就是定义在类中的方法 其中类 ...
- 依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)
依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见 ...
随机推荐
- 安装Node.js教程
前期准备 1.Node.js 简介简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node ...
- MySQL 事务一览
MySQL 中的事务? 对 MySQL 来说,事务通常是一组包含对数据库操作的集合.在执行时,只有在该组内的事务都执行成功,这个事务才算执行成功,否则就算失败.MySQL 中,事务支持是在引擎层实现的 ...
- coverage代码覆盖率的使用~~
我们看下代码覆盖率的统计~,这个不必太揪心,觉得可以帮助你优化代码,可以看看,也不要带在意~ 1.先在cmd命令窗口在线安装coverage pip install coverage 2.安装完毕后我 ...
- 多线程-Task、await/async
Task创建无返回值 Task是.netframwork4.0重新分装的多线程类.原因以前的多线程(thread threadpool)不好用.(.net framwork也是的发展的,现在的EF,刚 ...
- Navicat通过跳板机连接MySQL(2层跳转)
情景描述,公司开发数据库部署在内网,而且这个开发数据库有连接需要有IP验证,就是只能在内网的某个IP才能连接,所以每次连接都会先连接外网能访问的跳板机,在从跳板机上ssh到内网上的A机器,在从A机 ...
- 数据类型 _python
字符串 str # a ="asd bfg" # print(a.capitalize()) #首字母大写 # print(a.title()) #每个单词首字母大写 # prin ...
- 深度剖析Kubernetes API Server三部曲 - part 1
欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现.如果你对Kubernetes 的内部实现机制比 ...
- spark集群安装并集成到hadoop集群
前言 最近在搞hadoop+spark+python,所以就搭建了一个本地的hadoop环境,基础环境搭建地址hadoop2.7.7 分布式集群安装与配置 本篇博客主要说明,如果搭建spark集群并集 ...
- python 创建es mapping
import requests def get_(): url = "http://127.0.0.1:9200/indextest/_mapping?pretty" ss = r ...
- harbor关联k8s
第一步 在harbor上创建用户,项目,将用户添加到对应项目中,并赋予用户项目管理者或者开发人员权限,使其对镜像仓库有读写权限. 本次部署创建用户liusw,密码Lsw123456,邮箱8730017 ...