Python面向对象(2)类空间问题以及类之间的关系

类空间问题

添加对象属性

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

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': 'Rabbit', 'age': 20}

# 类内部也可以:
obj = A('Rabbit') # __init__方法可以。
obj.func('男')  # func 方法也可以。

通过对象找到类的属性

对象查找属性的顺序:先从对象空间找 ------> 类空间找 ------> 父类空间找 ------->.....
类名查找属性的顺序:先从本类空间找 -------> 父类空间找-------->
上面的顺序都是单向不可逆,类名不可能找到对象的属性

类与类之间的关系

  1. 依赖关系
  2. 关联关系
  3. 组合关系
    组合:将一个类的对象封装到另一个类的对象的属性中,就叫组合。
  4. 聚合关系
    关联,聚合,组合关系
    写法是⼀样的. 但是, 从含义上是不⼀样的
    (1). 关联关系. 两种事物必须是互相关联的. 但是在某些特殊情况下是可以更改和更换的.
    (2). 聚合关系. 属于关联关系中的⼀种特例. 侧重点是xxx和xxx聚合成xxx. 各⾃有各⾃的声明周期. 比如电脑. 电脑⾥有CPU, 硬盘, 内存等等. 电脑挂了. CPU还是好的. 还是完整的个体
    (3).组合关系. 属于关联关系中的⼀种特例. 写法上差不多. 组合关系比聚合还要紧密. 比如⼈的⼤脑, ⼼脏, 各个器官. 这些器官组合成⼀个⼈. 这时. ⼈如果挂了. 其他的东⻄也跟着挂了
  5. 实现关系
  6. 继承关系(类的三大特性之一:继承。)
原文地址:https://www.cnblogs.com/SkyRabbit/p/11317793.html