python类的空间问题及类之间的关系

类的空间问题及类之间的关系

类的空间问题

1.何处可以添加对象属性

class A:def __init__(self,name):self.name = namedef func(self,sex):self.sex = sexobj = A("alex")
obj.age = 18 # 通过__init__方法添加
print(obj.__dict__)
obj1 = A("wusir")
obj.func("男") # 通过func方法添加
print(obj1.__dict__)
# 结果:
{'name': 'alex', 'age': 18}
{'name': 'wusir'}

**总结:对象的属性不仅可以在__init__里面添加,还可以在类的其他方法或者类的外面添加。**

2.何处可以添加类的静态属性

class A:def __init__(self,name):self.name = namedef func(self,sex):self.sex = sexdef func1(self):A.bbb = 'ccc'A.aaa = "alex" # 类的外部添加
print(A.__dict__)
A.func1(111) # 类的内部添加
print(A.__dict__)

总结:类的属性不仅可以在类内部添加,还可以在类的外部添加。

3.对象如何找到类的属性

1729998-20190805142410392-504094833.jpg

对象之所以可以找到类,是因为对象空间有类对象指针

对象查找属性的顺序:先从对象空间找 ------> 类空间找 ------> 父类空间找 ------->.....

类名查找属性的顺序:先从本类空间找 -------> 父类空间找--------> ........

上面的顺序都是单向不可逆,类名不可能找到对象的属性。

类之间的关系

类之间存在以下几种关系:

​ 1.依赖关系

​ 2.关联关系

​ 3.组合关系

​ 4.聚合关系

​ 5.实现关系

​ 6.继承关系(类的三大特性)

依赖关系

依赖关系:将一个类的对象或者类名传到另一个类的方法使用。此时, 我们说, ⼤象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我.

class Elephant:def __init__(self,name):self.name = namedef open(self,obj):print(f"{self.name}默念3,2,1,{obj.name}打开了")def close(self):print(f"{self.name}关上了{self.name}的门")class Bx:def __init__(self,name):self.name = namedef open(self,obj1):print(f"{self.name}的门被{obj1.name}打开了")def close(self,obj1):print(f"{self.name}的门被{obj1.name}关上了")obj1 = Elephant("qq")
obj = Bx("B")
obj1.open(obj)

组合关系(2,3,4)

class Boy:def __init__(self,name,girlfriend=None):self.name = nameself.girlfriend = girlfrienddef have_a_dinner(self):if self.girlfriend:print(f"{self.name}请他的女朋友{self.girlfriend}一起烛光晚餐")else:print('单身狗,吃什么吃')
liye = Boy("李业")
liye.have_a_dinner()liye = Boy("李业")
liye.girlfriend = "乔碧萝"  # 在对象外部给对象赋值
liye.have_a_dinner()
class Boy:def __init__(self,name,girlfriend = None):self.name = nameself.girlfriend = girlfrienddef have_a_dinner(self):if self.girlfriend:print(f"{self.name}请他的{self.girlfriend.age}岁的,{self.girlfriend.body}的女朋友{self.girlfriend.name}一起烛光晚餐")else:print("单身狗吃什么吃")class Girl:def __init__(self,name,age,body):self.name = nameself.age = ageself.body = bodydef skill(self):print(f'{self.name}会用萝莉音直播')liye = Boy("李业")
qiao = Girl("乔碧萝",58,"小光跑")
liye.girlfriend = qiao   # 对象静态属性为qiao对象
liye.have_a_dinner()
class GameRole:def __init__(self,name,ad,hp):self.name = nameself.ad = adself.hp = hpdef attack(self,p1):p1.hp = p1.hp - self.adprint(f"{self.name}攻击{p1.name},{p1.name}掉了{self.ad},还剩{p1.hp}血")print(f"{p1.name}的血量为{p1.hp}")def equipment_wea(self,wea):self.weapon = weaclass Weapon:def __init__(self,name,ad):self.name =nameself.ad = addef weapon_attack(self,p1,p2):print(f"self:{self}")p2.hp =p2.hp -self.adprint(f"{p1.name}利用{self.name}给了{p2.name}一下子,{p2.name}还剩{p2.hp}血")gl = GameRole('盖伦',10,100)
zx = GameRole('菊花信',15,80)
sword = Weapon('宝剑',15)
Musket = Weapon('长缨枪',30)
gl.equipment_wea(sword) # 给人物装备武器对象。
gl.weapon.weapon_attack(gl,zx) # 组合:给一个对象封装一个属性,该属性是另一个类的对象

组合:将一个类的对象封装到另一个类的对象的属性中,就叫组合。

转载于:https://www.cnblogs.com/lifangzheng/p/11302758.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麻省理工学生发明 震惊世界

核心提示:在普拉纳夫看来,数字信息以像素的形式被限制在显示屏幕之中。他发明的"第六感装置"震惊全场,让世界为之惊叹。 MIT(麻省理工)印度裔学生Prarnav Mistry的天才发明:“第六感装置” 视频地址:http://v.youku.com…

Java生鲜电商平台-优惠券系统的架构设计与源码解析

Java生鲜电商平台-优惠券系统的架构设计与源码解析 电商后台:实例解读促销系统 电商后台系统包括商品管理系统、采购系统、仓储系统、订单系统、促销系统、维权系统、财务系统、会员系统、权限系统等,各系统之间相互关联、相互依托,为前端的正…

VC 2010下安装OpenCV2.4.4

说明: 安装平台:32位XP,VS2010;OpenCV 2.4.4不支持VC 6.0;网上有很多用CMake编译OpenCV的安装教程,这里建议先不要自己编译,如果使用预编译好的库有问题,再尝试自己编译。希望大家好…

vue3源码中的最长递增子序列

求解最长递增子序列是一道经典的算法题, 多数解法是使用动态规划的思想,算法的时间复杂度是O(); 而Vue.js内部使用的是维基百科提供的一套“贪心二分查找”的算法; 贪心算法的时间复杂度是O(n),二分查找的时间复杂度是O(logn),总时间复杂度…

Java编程基础阶段笔记 day04 Java基础语法(下)

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法&…

汉诺塔递归算法

起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子…

Java编程基础阶段笔记 day 07 面向对象编程(上)

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法&…

Vue/Angular中父窗口新开的子窗口关闭的时候刷新父窗口

最近遇到一个项目需求:Angular中父窗口新开的子窗口提交完信息关闭的时候刷新父窗口。 知识点: window.opener 概述 返回打开当前窗口的那个窗口的引用,例如:在window A中打开了window B,B.opener 返回 A. 语法 …

HDU 6631 line symmetric(枚举)

首先能想到的是至少有一对相邻点或者中间间隔一个点的点对满足轴对称,那么接下来只需要枚举剩下的点对是否满足至多移动一个点可以满足要求。 第一种情况,对于所有点对都满足要求,那么Yes。 第二种情况,有一个点不满足要求&#x…

学习数字图像处理经验谈

一、面向应用:层层分解、抓住要点 我们学习数字图像处理的最终目的还是应用,不管是用它来研制产品还是研发项目抑或是研究课题,都要用数字图像处理的理论、方法和技术来解决实际问题。在此过程中,提高效率是非常重要的&#xff0c…

react-router-dom@6获取路由传参

目录 参数获取 1、子路由形式携带 2、问号(?)形式参数 3、事件跳转传参 router/index.tsx import App from "App"; import Home from "pages/Home"; import List from "pages/List"; import Detail from "pages/Detail"; import…

koa洋葱模型

Koa 和 Express 都会使用到中间件 Express的中间件是顺序执行,从第一个中间件执行到最后一个中间件,发出响应如上图 Koa是从第一个中间件开始执行,遇到 next 进入下一个中间件,一直执行到最后一个中间件,在逆序&#x…

koa后端允许跨域

举个例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-width…

python面向对象之继承

面向对象之继承 什么是面向对象的继承&#xff1f; 继承&#xff08;英语&#xff1a;inheritance&#xff09;是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B&#xff0c;就把这个A称 为“B的子类别”&#xff0c;而把B称为“A的父类别”也可以称“B是…

美国正面临“人才泡沫”破裂危机?

&#xff08;Jason Lane和Kevin Kinser/文&#xff09;最近&#xff0c;与教育有关的种种问题在美国社会引起了广泛讨论。首先巨额的学生贷款问题&#xff1a;根据美联储纽约分行在2012年11月发布的一份报告&#xff0c;全美学生贷款总额已经达到420亿美元&#xff0c;其中新增…

ngrx学习笔记

什么是ngrx ngrx是Angular基于Rxjs的状态管理&#xff0c;保存了Redux的核心概念&#xff0c;并使用RxJs扩展的Redux实现。使用Observable来简化监听事件和订阅等操作。 在看这篇文章之前&#xff0c;已经假设你已了解rxjs和redux。 有条件的话请查看官方文档进行学习理解。 所…

.slice(0)

高手代码里看到.slice(0)&#xff0c;查了下这样写的好处&#xff1a; 1.对原数组进行深拷贝&#xff0c;这样进行一系列操作的时候就不影响原数组了&#xff1b; 2.将类数组对象转化为真正的数组对象&#xff1a;var anchorArray [].slice.call(document.getElementsByTagN…

亲历2013年TED大会:全球最潮灵感大会

本文转自&#xff1a;http://mooc.guokr.com/opinion/436837/ 本文由《外滩画报》供稿 文/华琪&#xff08;发自美国&#xff09; 编辑/吴慧雯 什么是TED的世界&#xff1f;在这里&#xff0c;你可以轻易发现各种名人出没的痕迹&#xff0c;和各个领域里最具远见卓识和创造…

Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明&#xff1a;Java生鲜电商平台中会员体系作为电商平台的基础设施&#xff0c;重要性不容忽视。我去年整理过生鲜电商中的会员系统&#xff0c;但是比较粗&#xff0c;现在做一个最好的整理架构. 设计电商会员体系需…

为什么要上大学?

为了让自己成为更有意思的人。 &#xff08;文&#xff0f;美国圣母大学哲学教授 Gary Gutting&#xff09;再不久&#xff0c;千千万万的大学生又将走完一个学期。他们中的很多人以及他们的家人&#xff0c;可能为刚刚过去的几个月或是几年投入了相当可观的时间、努力以及金钱…