摘要:
协程,又称为'微线程'。英文名Coroutine。 协程的特点:一个线程执行 协程的优势: 1、执行效率高 因为协程切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 2、不需要多线程的锁机制 因为只有一个线程,也不存在同时写变量冲突, 阅读全文
摘要:
如果您将某个东西定义为classmethod,这可能是因为您打算从类而不是类实例中调用它。 定义类方法的几种方式: 调用说明 其他案例: 阅读全文
摘要:
1、单继承 super().__int__()和 Base.__init__(self)是一样的, super()避免了基类的显式调用。 2、多继承 注意:多继承时,会设计继承顺序,supper()相当于返回继承顺序的下一个类,而不是父类。 在多重继承中 ,ChildClassA()中的 super 阅读全文
摘要:
继承的好处:子类实现父类的全部功能 1、单继承 若父类和子类有共同的方法或属性,则子类对父类方法或属性进行覆盖 class ClassA: def __init__(self): self.a = 'a' print('init A') def sayName(self): print('Name' 阅读全文
摘要:
1、新建 test.py 模块: 运行结果: 2、新建 Demo.py 模块 输出: 总结: 1、__name__是一个系统变量,用来标识模块的名字。 2、__name__ == '__main__'的意思: a) 当 python 文件被直接运行的时候,__name__的值为’__main__’ 阅读全文
摘要:
为什么使用序列化? 因为程序运行期间,所有的变量都在内存中。可以随时修改变量,但程序一接触,所占的内存就会被操作系统回收。如果没有把修改后的'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为'Bob'。 通过将对象序列化,可以将其存储在变量或内存中,可以保存当时的状态,实现生命周期的延长, 阅读全文
摘要:
两种方式定义枚举类: 1、直接使用Enum列出多个枚举值来创建枚举类。 2、通过集成Enum基类派生枚举类。 程序示范: 1、直接使用Enum列出多个枚举值来创建枚举类。 上面的代码使用Enum()函数来创建枚举类,该方法第一个参数:枚举类的类名;第二个参数:元组,用于列出所有枚举值。 通过枚举值访 阅读全文
摘要:
@property装饰器就是负责把一个方法变成属性调用的. @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性 把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建 阅读全文
摘要:
给实例绑定一个属性: 给实例绑定一个方法: 但是,给一个实例绑定的方法,对另一个实例是不起作用的: 为了给所有实例都绑定方法,可以给class绑定方法: 给class绑定方法后,所有实例均可调用: 通常情况下,上面的set_score方法可以直接定义在class中,但动态绑定允许我们在程序运行的过程 阅读全文
摘要:
使用__slots__的目的:限制实例的属性 用法:定义class的时候,定义一个特殊的__solts__变量,来限制实例能添加的属性。 由于'score'没有被放到__slots__中,所以不能绑定score属性,试图绑定score将得到AttributeError的错误。 使用__slots__ 阅读全文