文章分类 - 面向对象编程
摘要:反射这个术语在很多语言中都存在,并且存在大量的运用,今天我们说说什么是反射,反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力,在python中一切皆对象(类,实例,模块等等都是对象),那么我们就可以通过反射的形式操作对象相关的属性。 # 1.hasattr(object,name):
阅读全文
摘要:简单来说就是同一个对象的多种形态 import abc class File(metaclass=abc.ABCMeta): #同一类事物:文件 @abc.abstractmethod def click(self): pass class Text(File): #文件的形态之一:文本文件 def
阅读全文
摘要:在python2.2之前,只支持经典类【从左到右,深度优先,大小钻石,不留顶端】 后来,Python想让类默认继承object(其他语言的面向对象基本上也都是默认都继承object),此时发现原来的经典类不能直接集成集成这个功能,有Bug。 所以,Python决定不再原来的经典类上进行修改了,而是再
阅读全文
摘要:如果类中存在继承关系,在可以通过mro()获取当前类的继承关系(找成员的顺序)。 示例 简写为:A -> B -> D -> G -> H -> K -> C -> E -> F -> M -> N -> P -> object mro(A) = [A] + merge( mro(B), mro(C
阅读全文
摘要:callable,是否可在后面加括号执行。 函数 def func(): pass print( callable(func) ) # True 类 class Foo(object): pass print( callable(Foo) ) # True 类中具有__call__方法的对象 cla
阅读全文
摘要:在面向对象中有这样的理念,即:子类可以继承父类中的方法和类变量 (不是拷贝一份,父类的还是属于父类,子类可以继承而已)。 也可以加基类和派生类 class Base: def func(self): print("Base.func") class Son(Base): def show(self)
阅读全文
摘要:程序设计追高内聚,低耦 高内聚:类的内部数据操作细节自己完成,不允许外部干涉 低耦合:仅对外暴露少量的方法用于使用。 隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。 通俗的说,把该隐藏的隐藏起来,该暴露的暴露岀来。这就是封装性的设计思想。 1、私有属性
阅读全文
摘要:迭代器 # 迭代器类型的定义: 1.当类中定义了 __iter__ 和 __next__ 两个方法。 2.__iter__ 方法需要返回对象本身,即:self 3. __next__ 方法,返回下一个数据,如果没有数据了,则需要抛出一个StopIteration的异常。 官方文档:https://d
阅读全文
摘要:文件操作——上下问管理 with xxx as f: pass class Foo(object): def __enter__(self): return 666 def __exit__(self, exc_type, exc_val, exc_tb): pass obj = Foo() # w
阅读全文
摘要:1,** __setitem__** class Foo(object): def __setitem__(self, key, value): print(key, value) obj = Foo() obj["xxx"] = 123 # xxx 123 2,__getitem__ class
阅读全文
摘要:1,__init__ 初始化方法,在对象产生后才会执行,不能有返回值 2,__new__方法 类名() 创建对象时,在自动执行 __init()__方法前,会先执行 object.__new__方法,在内存中开辟对象空间并返回 class Person(object): def __new__(cl
阅读全文
摘要:属性其实是由绑定方法 + 特殊装饰器 组合创造出来的,以后在调用方法时可以不加括号 关于属性的编写有两种方式: 方式一,基于装饰器 方式二,基于定义变量 由于属性和实例变量的调用方式相同,所以在编写时需要注意:属性名称 不要 实例变量 重名。 如果真的想要在名称上创建一些关系,可以让实例变量加上一个
阅读全文
摘要:1.3 其他成员 变量 实例变量 类变量 方法 绑定方法 类方法 静态方法 属性 1.3.1 变量 实例变量,属于对象,每个对象中各自维护自己的数据。 类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变量)。 当把每个对象中都存在的相同的示例变量时,可以选择把它放在类变量中
阅读全文
摘要:1.1核心概念 一切皆对象,先有类后有对象 类 对象 self 想要通过面向对象去实现某个或某些功能时需要2步: 定义类,在类中定义方法,在方法中去实现具体的功能。 实例化类并的个一个对象,通过对象去调用并执行方法。 例如: class Message: def send_email(self, e
阅读全文
浙公网安备 33010602011771号