python中面向对象空间时间_零基础老男孩学Python|面向对象之类的空间问题
一. 类的空间问题
1.1 何处可以添加对象属性class A:
def __init__(self,name):
self.name = name
def func(self,sex):
self.sex = sex# 类外面可以:
obj = A('barry')
obj.age = 18
print(obj.__dict__) # {'name': 'barry', 'age': 18}
# 类内部也可以:
obj = A('barry') # __init__方法可以。
obj.func('男') # func 方法也可以。
总结:对象的属性不仅可以在__init__里面添加,还可以在类的其他方法或者类的外面添加。
1.2 何处可以添加类的静态属性class A:
def __init__(self,name):
self.name = name
def func(self,sex):
self.sex = sex
def func1(self):
A.bbb = 'ccc'# 类的外部可以添加
A.aaa = 'taibai'
print(A.__dict__)
# 类的内部也可以添加。
A.func1(111)
print(A.__dict__)
总结:类的属性不仅可以在类内部添加,还可以在类的外部添加。
1.3 对象如何找到类的属性
之前咱们都学习过,实例化一个对象,可以通过点的方式找到类中的属性,那么他为什么可以找到类中的属性呢?
通过图解说明:
对象查找属性的顺序:先从对象空间找 ------> 类空间找 ------> 父类空间找 ------->.....
类名查找属性的顺序:先从本类空间找 -------> 父类空间找--------> ........
上面的顺序都是单向不可逆,类名不可能找到对象的属性。
二. 类与类之间的关系
⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进⾏归类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类中存在以下关系:
1. 依赖关系2. 关联关系3. 组合关系4. 聚合关系5. 实现关系6. 继承关系(类的三大特性之一:继承。)
2.1 依赖关系
首先, 我们设计一个场景. 还是最初的那个例子. 要把大象装冰箱. 注意. 在这个场景中, 其实是存在了两种事物的. 一个是大象, 大象负责整个事件的掌控者, 还有一个是冰箱, 冰箱负责被大象操纵.
首先, 写出两个类, 一个是大象类, 一个是冰箱类class Elphant:
def __init__(self, name):
self.name = name
def open(self):
'''
开⻔
'''
pass
def close(self):
'''
关⻔
'''
pass
class Refrigerator:
def open_door(self):
print("冰箱⻔被打开了")
def close_door(self):
print("冰箱⻔被关上了")
冰箱的功能非常简单, 只要会开门, 关门就行了. 但是大象就没那么简单了. 想想. 大象开门和关门的时候是不是要先找个冰箱啊. 然后呢? 打开冰箱. 是不是打开刚才找到的那个冰箱. 然后装大象 最后呢? 关冰箱门, 注意, 关的是刚才那个冰箱吧. 也就是说. 开和关的是同一个冰箱. 并且. 大象有更换冰箱的权利, 想进那个冰箱就进那个冰箱. 这时, 大象类和冰箱类的关系并没有那么的紧密. 因为大象可以指定任何一个冰箱. 接下来. 我们把代码完善一下.
class Elphant:
def __init__(self, name):
self.name = name
def open(self,obj1):
'''
开⻔
'''
print('大象要开门了,默念三声,开')
obj1.open_door()
def close(self):
'''
关⻔
'''
print('大象要关门了,默念三声,关')
class Refrigerator:
def open_door(self):
print("冰箱⻔被打开了")
def close_door(self):
print("冰箱⻔被关上了")
elphant1 = Elphant('大象')
haier = Refrigerator()
elphant1.open(haier)
动作发起的主体是大象,你们把关门这个练一下。依赖关系:将一个类的对象或者类名传到另一个类的方法使用。此时, 我们说, 大象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我. 这种关系是最弱的.比如. 公司和雇员之间. 对于正式员工 肯定要签订劳动合同. 还得伺候着. 但是如果是兼职. 那无所谓. 需要了你就来. 不需要你就可以拜拜了. 这样的兼职(临时工) 就属于依赖关系.我⽤你. 但是你不属于我
python中面向对象空间时间_零基础老男孩学Python|面向对象之类的空间问题相关推荐
- 零基础轻松学python pdf 小码哥_零基础轻松学Python
零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...
- 0基础学python需要多长时间_零基础学python大概要多久
如果是自学的话,零基础学python大概要花一年到一年半的时间.每个人的资质不同.理解能力不同,所以花费的时间也不一样.建议零基础的学员报一个python培训班,这样可以有规划的系统性学习,而且花费的 ...
- 一个零基础学python能学会吗_零基础可以学Python吗
展开全部 一.Python是一种计算机程序设计语言. 你可能32313133353236313431303231363533e78988e69d8331333433633338已经听说过很多种流行的编 ...
- python可以做机器人吗_零基础如何用Python写一个简单的WeChat机器人?(内附代码)...
(bing图片) python这两年热火朝天,依托其众多类库,基于python的应用层出不穷,也大大降低了非计算机专业人员的入门门槛,WeChat机器人自然不在话下!-- 聪明的瓦肯人 苦于有时候总是 ...
- python血条游戏代码_零基础快速学十二课Python完整游戏代码,使用「格式符%」来处理...
十二课Python不同数据类型的拼接方式,使用[格式符%]来处理 不过它还没有全部解决:打印出每局结果,三局两胜打印最终战果.这就是版本3.0需要做的事情. 打印战果,三局两胜. 对比2.0版本,在3 ...
- 跟艾文学编程《零基础入门学Python》(4)Python 面向对象
作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂. 邮箱: 1121025745@qq.com 博客:https://wenjie.blog.csdn.n ...
- 零基础入门学Python(十二)—— 魔法方法(上)
零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(上) 1. 构造和析构 1.1 _ _ init _ _(self[, ...]) ...
- 零基础可以学python吗-零基础适合学Python吗?小白能否学会Python?
原标题:零基础适合学Python吗?小白能否学会Python? 我没学过编程,能否学会Python? 肯定的回答您:完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零 ...
- 零基础适合学python吗-零基础适合学Python吗?小白能否学会Python?
原标题:零基础适合学Python吗?小白能否学会Python? 我没学过编程,能否学会Python? 肯定的回答您:完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零 ...
最新文章
- 【原创】MyEclipse反编译添加jadclipse_3.3.0 曲折的完美解决
- 数据回发时,维护ASP.NET Tree控件位置
- 2020-11-24(dll注入的N种搞法)
- python变量类型是动态的_Python 学习 第四篇:动态类型模型
- boost::distance用法的测试程序
- 用C语言写的迅雷看看XV文件提取器及C语言源代码
- iOS imageview图片压缩变形
- ABAP的自学之路 ,初步认识ABAP 一
- nginx: [error] open() “/usr/local/var/run/nginx.pid“ failed (2: No such file or directory)
- 程序员都该知道这5个定律,有朋友使用后,现在已经是软件工程师!
- phpstudy本地搭建域名访问
- pads layout PCB整体旋转,不改变布局并保留连线
- Go 基本语法之变量声明
- DELPHI的编译指令
- 微信小程序开发的坑---tabBar
- IT人的职业生涯规划
- csgo fps不稳定和服务器,CSGO fps不稳定,求FPS 优化设置
- java swing实现文件浏览器功能小程序
- 未来,将是Captain technology新能源汽车的舞台
- R语言绘制复杂抽样设计数据cox回归生存曲线(Kaplan-Meier)