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__里面添加,还可以在类的其他方法或者类的外面添加。
2. 对象如何找到类的属性
对象查找属性的顺序:先从对象空间找 ------> 类空间找 ------> 父类空间找 ------->.....
类名查找属性的顺序:先从本类空间找 -------> 父类空间找--------> ........
实例化一个对象,可以通过点的方式找到类中的属性
类与类中存在以下关系:
1 依赖关系
依赖关系:将一个类的对象或者类名传到另一个类的方法使用。此时, 我们说, 大象和冰箱之间就是依赖关系. 我用着你. 但是你不属于我. 这种关系是最弱的
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) 动作发起的主体是大象
2 关联,聚合,组合关系
其实这三个在代码上写法是一样的. 但是, 从含义上是不一样的.
1. 关联关系. 两种事物必须是互相关联的. 但是在某些特殊情况下是可以更改和更换的.
2. 聚合关系. 属于关联关系中的?种特例. 侧重点是xxx和xxx聚合成xxx. 各自有各自的声明周期. 比如电脑. 电脑里有CPU, 硬盘, 内存等等. 电脑挂了. CPU还是好的. 还是完整的个体
3. 组合关系. 属于关联关系中的?种特例. 写法上差不多. 组合关系比聚合还要紧密. 比如?的?脑, 心脏, 各个器官. 这些器官组合成?个?. 这时. 人如果挂了. 其他的东西也跟着挂了
组合:将一个类的对象封装到另一个类的对象的属性中,就叫组合。组合关系和聚合关系,其实代码上差别不大。
咱们设计一个游戏人物类,让实例化几个对象让这几个游戏人物实现互殴的效果。
class Gamerole: def __init__(self,name,ad,hp): self.name = name self.ad = ad self.hp = hp def attack(self,p1): p1.hp -= self.ad print(‘%s攻击%s,%s掉了%s血,还剩%s血‘%(self.name,p1.name,p1.name,self.ad,p1.hp)) def equip_weapon(self,wea): self.wea = wea # 组合:给一个对象封装一个属性改属性是另一个类的对象 class Weapon: def __init__(self,name,ad): self.name = name self.ad = ad def weapon_attack(self,p1,p2): p2.hp = p2.hp - self.ad - p1.ad print(‘%s 利用 %s 攻击了%s,%s还剩%s血‘ %(p1.name,self.name,p2.name,p2.name,p2.hp)) # 实例化三个人物对象: barry = Gamerole(‘太白‘,10,200) panky = Gamerole(‘金莲‘,20,50) pillow = Weapon(‘绣花枕头‘,2) # 给人物装备武器对象。 barry.equip_weapon(pillow) # 开始攻击 barry.wea.weapon_attack(barry,panky)
上面就是组合,只要是人物.equip_weapon这个方法,那么人物就封装了一个武器对象,再利用武器对象调用其类中的weapon_attack方法。
原文:https://www.cnblogs.com/Summer-skr--blog/p/11801367.html