python 面向对象专题:类的空间问题类与对象之间的关系类与类之间的关系
Posted 秋华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 面向对象专题:类的空间问题类与对象之间的关系类与类之间的关系相关的知识,希望对你有一定的参考价值。
https://www.cnblogs.com/liubing8/p/11308127.html
1. 类的空间问题
-
添加对象属性
# 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 class Human: mind = \'有思想的\' def __init__(self, name, age): self.name = name self.age = age def eat(self,argv): Human.body = argv print(\'吃饭\') sun = Human(\'张三\', 18) sun.eat() print(sun.__dict__) sun.weight = 130 print(sun.__dict__)
-
添加类的属性
# 类的内部 sun.eat(\'有头有脸\') # 类的外部 Human.body = \'有头四肢\' print(Human.__dict__)
2. 类与对象之间的关系
-
查找顺序角度分析类与对象之间的关系
对象空间与类空间有相同的名字, 对象. 肯定先从对象空间查找. 查询顺序: 对象.名字: 对象空间 ______类对象指针_______--> 类空间 ---> 父类空间 类名.名字: 类空间 -----> 父类空间 1.每个对象都可以从类的空间去找,不可以去别的对象空间去找 2.单向不可逆,类名不可以找到对象的属性 3.__init__产生对象空间,不是空的,有一个对象指针
3. 类与类之间的关系
-
依赖关系:将一个类的类名或者对象传入另一类的方法中
class Elephant: def __init__(self,name): self.name = name def open(self,obj): print(f\'{self.name} 默念三声: 3,2,1 开门\') obj.be_open() def close(self): print(f\'{self.name} 默念三声: 3,2,1 关门\') class Refrigerator: def __init__(self, name): self.name = name def be_open(self): print(f\'{self.name}冰箱 被打开了\') def be_close(self): print(f\'{self.name}冰箱 被关闭了\') qiqi = Elephant(\'奇奇\') haier = Refrigerator(\'海尔\') qiqi.open(haier)
-
组合关系:将一个类的对象封装到另一个类的对象的属性中
class Boy: def __init__(self, name, girlfriend=None): self.name = name self.girlfriend = girlfriend def have_a_diner(self): if self.girlfriend: print(f\'{self.name}请他的{self.girlfriend.age}岁的,{self.girlfriend.body}的女朋友{self.girlfriend.name}一起烛光晚餐\') else: print(\'吃什么吃\') def girl_skill(self): print(f\'{self.name}的女朋友的技能:\') self.girlfriend.skill() class Girl: def __init__(self,name,age,body): self.name = name self.age = age self.body=body def skill(self): print(f\'{self.name} 会做饭\') ergou = Boy(\'二狗\') qiao = Girl(\'乔\', 58, \'小钢炮\') ergou.girlfriend = qiao ergou.have_a_diner() ergou.girl_skill()
-
总结:依赖与组合让类与类产生关系,增强耦合性
以上是关于python 面向对象专题:类的空间问题类与对象之间的关系类与类之间的关系的主要内容,如果未能解决你的问题,请参考以下文章
python------面向对象介绍之经典类与新式类的继承顺序