python之路-day17-类与类之间的关系

一、昨日内容回顾

 

  成员:

    变量

      1、实例变量。对象.xxx  self.属性 = 值

      2、变量名。 类名.变量  直接写在类中的变量  可以通过对象去访问类变量。不能修改

  方法

      1、实例方法

        def 方法(self):

          pass

        用对象去调用实例方法

      2、类方法

        @classmethod

        def 方法(cls):

          pass

      3、静态方法

        @staticmethod

        def  方法():

          pass

  属性

    可以把方法转换成属性

    @property

    def 属性(self):

      return ""   

    对象.属性

 

  私有:

    用双下划线做前缀,私有的内容只能在本类中访问。

 

 

二、类与类之间的关系
在面向对象的世界中,类与类中存在以下关系:
1、依赖关系:我用着你,但是你不属于我,这种关系是最弱的

2、关联关系:两种事物必须是关联的,但是在某些情况下是可以更改和更换的
3、组合关系:属于关联关系中的一种特例,写法上差不多。组合关系比聚合还要紧密
比如人的大脑,心脏,各个器官组合成一个人,缺一不可
4、聚合关系: 属于关联关系中的一种特例,侧重点是xxx和xxx聚合成xxx。各自有各自
的声明周期。比如电脑。电脑里有CPU,硬盘,内存等等。电脑系统挂了,cpu还是好的
5、继承关系: x是⼀种y, 那x就可以继承y. 这时理解层⾯上的. 如果上升到代码层⾯.
我们可以这样认为. ⼦类在不影响⽗类的程序运⾏的基础上对⽗类进⾏的扩充和扩展.
这⾥.我们可以把⽗类被称为超类或者基类. ⼦类被称为派⽣类.
结论:self就是你访问方法的那个对象。先找自己,然后再找父类。

三、类中的特殊成员
什么是特殊成员呢?__init__() 就是一个特殊的成员,说白了。带双下滑线的那一坨。这些
方法在特殊的场景的时候会被自动执行。比如:
1、类名() 会自动执行 __init__()
2、对象()会自动执行__call__()
3、对象[key] 会自动执行__getitem__()
4、对象[key] = value 会自动执行__setitem__()
5、del 对象[key] 会自动执行 __delitem__()
6、对象+对象 会自动执行__delitem__()
7、with 对象 as 变量 会自动执行__enter__ 和 __exit__
8、打印对象的时候,会自动执行__str__
9、干掉可哈希 __hash__ == None 对象就不可哈希了

 

posted @ 2018-11-09 16:58  wenjie^_^  阅读(167)  评论(0编辑  收藏  举报