摘要:对于在父类中存在的属性,如果要在其派生类中继续扩展属性 可以这样实现 1 class Valley: 2 def __init__(self): 3 self._name = None 4 5 @property 6 def name(self): 7 return self._name 8 9 @
阅读全文
摘要:鸭子类型 我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1 class PageOne: 2 def status(self): 3 return "按期申报页" 4 5 6 class PageTwo: 7 def status(self): 8 ret
阅读全文
摘要:1、命名元组也叫具名元组 可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数 2、应用1 实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理 1 from collections import namedtuple 2 3 # 返回可实例化
阅读全文
摘要:编译.py文件为.pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高。 而且pyc是一种跨平台的字节码,pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。 1、compileal
阅读全文
摘要:在没有直接父类的类中使用super 1 class A: 2 def func(self): 3 print("A") 4 super().func() 5 6 7 class B: 8 def func(self): 9 print("B") 10 11 12 class C(A, B): 13
阅读全文
摘要:1、无论是浅拷贝还是深拷贝,拷贝对象后是否会开辟新内存,取决于被拷贝对象的数据类型是否可变,一般来讲,可变的数据类型会开辟新内存,不可变数据类型反之不会开辟新内存,进行内存地址的引用(-5-256以外的大整数池会开辟内存,注:但我本地进行测试比较内存还是一样的,有问题) 2、要在单层、嵌套型对象中逐
阅读全文
摘要:第一个参数类型决定执行特定的方法体 一、单分派泛函数 只对函数的第一个参数做类型检查,发现局限性太大,没什么特别的应用场景,也可能是我没用到 1 from functools import singledispatch 2 3 4 @singledispatch 5 def func(a, *arg
阅读全文
摘要:1、无论程序在哪出现异常,最终都会执行注册过的方法 1 import atexit 2 3 4 @atexit.register 5 def func(): 6 print(1) 7 8 9 def func2(): 10 print(2) 11 12 13 def func3(): 14 retu
阅读全文
摘要:避免在每新建类时,都要重复实现构造器,因此可以定义一个公共基类,在基类中实现实例属性的初始化规则,此后在派生类中,只需要指定属性字段即可 1 class Init: 2 _fields = [] 3 4 def __init__(self, *args, **kwargs): 5 if len(ar
阅读全文
摘要:平常学习过程发现了一个牛掰装饰器,在此记录下 1 from functools import lru_cache 2 3 4 @lru_cache() 5 def count(a, b): 6 print("对{},{}求和".format(a, b)) 7 return sum([a, b]) 8
阅读全文
摘要:委托属性的访问: 对当前类属性方法等的访问委托到其内部对象上,可以作为继承的一种替代方案 1 class ProtoType: 2 def __init__(self): 3 self.name = "g" 4 5 def func(self): 6 print(self.name) 7 8 9 c
阅读全文
摘要:我们都知道,在类中实现__enter__、__exit__方法即可成为上下文管理器,这里主要浅谈一下上下文管理器的另外一种快速实现方式 上下文管理器:可以理解为装饰器,在主体程序的执行前后执行一些必要的操作,使用yield分离 1 import contextlib 2 3 4 @contextli
阅读全文
摘要:可以理解为property方法的一种进阶,都可以用来创建一种新形式的实例属性,即在实例属性值的获取和设定上,增加额外的处理事务,such as:类型检查、验证 重写三个属性访问方法,其中__delete__方法是否重写取决需求 在类层次上引用描述符,即该类遵从描述符协议 1 class Check:
阅读全文
摘要:首先我们要清楚property方法的定义规则: 1、使用@property装饰方法,被装饰的方法变成属性 2、给属性附加setter等特性,也就意味着在给此属性赋值时,会自动触发此方法的执行 1 def expected_type(name, type): 2 storage_name = "_"
阅读全文
摘要:一、基于函数实现 1、嵌套函数 代码实现: 1 from functools import wraps 2 3 4 def decorator(param): 5 def wrapper(func): 6 @wraps(func) 7 def verify(*args, **kwargs): 8 i
阅读全文