摘要: 结论: __call__:在实例化一个类时,在后边加上(),执行的就是call方法,它没有返回值,所以没有真正实例化一个对象出来,所以call方法中的操作不会影响到其它对象 __eq__:对象碰到==,执行的是__eq__ 默认情况下: 可以自定义实现: __hash__:对一个不可变数据类型has 阅读全文
posted @ 2019-09-07 21:50 aikell 阅读(239) 评论(0) 推荐(0)
摘要: python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)四种形式:getattr setattr delattr hasattrgetattr(obj,name)例:反射类 # 反射对象的属性 # 反射对象的方法 # 反射类的属性 # 反射类的方法:classmethod staticmethod class Person: __mong 阅读全文
posted @ 2019-09-07 18:08 aikell 阅读(222) 评论(0) 推荐(0)
摘要: 注意:类方法操作涉及静态属性的时候,他的操作对当前类的作用域有效,会影响所有调用该静态属性的方法。使用时需要注意self应该变为cls。 isinstance、issubclass 阅读全文
posted @ 2019-09-06 16:44 aikell 阅读(212) 评论(0) 推荐(0)
摘要: property:是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 一个静态属性property本质就是实现了get,set,delete三种方法 例:在不改变对象调用属性名的方式(obj.name)下,实现了被封装属性在类外部的查看、修改、删除 注意: 阅读全文
posted @ 2019-09-06 15:18 aikell 阅读(158) 评论(0) 推荐(0)
摘要: 封装: 广义:面向对象的封装是对代码的保护,面向对象的思想本身就是一种,只让自己的对象能调用自己类中的方法就是一种封装 狭义:是面向对象的三大特性之一,属性和方法都藏起来,不让你能在外部调用,让你看不见 使用方法:名字前面加双下划线 会用到封装的场景: 1.隐藏起一个属性 不想让类的外部调用 2.我 阅读全文
posted @ 2019-09-05 19:29 aikell 阅读(184) 评论(0) 推荐(0)
摘要: Python角度:只有抽象类,没有接口类,实现接口类需要借助模块使用:abc模块中的abstractmethod和ABCMeta,声明元类metaclass = ABCMeta,且加上装饰器@abstructmethod 本质作用:代码规范,希望在子类中实现和父类方法名字完全一样的方法 Java角度 阅读全文
posted @ 2019-09-05 18:40 aikell 阅读(283) 评论(0) 推荐(0)
摘要: 经典类为深度优先:即一条路找到低,找不到则换一条路。 关于super: super的本质:不是单纯找父类 而是根据调用者的节点位置的广度优先顺序来的,所以寻找顺序为D-->B-->C-->A 阅读全文
posted @ 2019-09-03 18:28 aikell 阅读(183) 评论(0) 推荐(0)
摘要: 定义一个类: 例: 总结: 1、实例化的过程就是类——>对象的过程,创建的对象就是一个实例化的东西 2、self在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做。self拥有属性都属于对象,在类的内部,self就是一个对象 3、对象通过 阅读全文
posted @ 2019-08-31 20:10 aikell 阅读(173) 评论(0) 推荐(0)
摘要: 知识点:闭包,即外部函数的变量被内部函数调用 思考:当函数返回值为可变数据类型(字典)时,可在返回之前添加一个键值对,赋值可以是当前作用域函数的内存地址,这样就能以字典获取vaule的形式调用到内部函数(赋值的内存地址指向的函数) 转换为面向对象方式编写: 阅读全文
posted @ 2019-08-31 17:33 aikell 阅读(338) 评论(0) 推荐(0)
摘要: python中的错误: 语法错误 逻辑错误 什么是异常: 两种错误引发程序发出的信号,在pycharm中就是控制台 异常的分类: 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 AttributeError 阅读全文
posted @ 2019-08-30 21:55 aikell 阅读(144) 评论(0) 推荐(0)