![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python高级编辑技巧
Python的一些高级编辑技巧
科学大道上只有我一个
可以迷茫,但别停下学习的脚步
展开
-
类与对象深度问题与解决技巧(5 如何让类支持比较操作)
有时我们希望自定义类的实例间可以使用,<,<=,>,>=,==,!=符号进行比较,我们自定义比较的行业,例如,有一个矩形的类,比较两个矩形的实例时,比较的是他们的面积. 1 写一个Rect类,用于比较矩形的的面积 from functools import total_ordering @total_ordering class Rect(object): de...原创 2020-02-06 19:17:15 · 114 阅读 · 0 评论 -
类与对象深度问题与解决技巧(4 如何创建可管理的对象属性)
在面向对象编程中,我们把方法看做对象的接口。直接访问对象的属性可能是不安全的,或设计上不够灵活,但是使用调用方法在形式上不如访问属性简洁,且但是如果属性声明和定义的过多的话,则在外部将要使用太多的访问器方法。.所以我们通过访问方法的形式直接访问对象的属性 1 通过直接用 property方法 class Demo(object): def __init__(self, name): ...原创 2020-02-06 17:11:00 · 93 阅读 · 0 评论 -
类与对象深度问题与解决技巧(3 上下文管理器)
首先写一个简单的异常处理 try: f = open('demo.txt', 'w') # 抛出异常 raise TypeError # 捕获异常 except TypeError as e: print('TypeError') f.close() except ValueError as e: print('ValueError') f....原创 2020-02-06 16:32:28 · 78 阅读 · 0 评论 -
类与对象深度问题与解决技巧(2 如何为创建大量实例节省内存)
实际问题: 在游戏中,定义了玩家类player,每有一个在线玩家,在服务器内则有一个player的实例,当在线人数很多时,将产生大量实例(百万级) 如何降低这些大量实例的内存开销? 解决方案: 定义类的__slots__属性,声明实例有哪些属性(关闭动态绑定) 创建两个类,区别为Player2有slots方法 import sys import tracemalloc class Player1...原创 2020-02-06 13:55:18 · 251 阅读 · 0 评论 -
类与对象深度问题与解决技巧(1如何派生内置不可变类型并修改其实例化行为)
如何派生内置不可变类型并修改其实例化行为 我们想自定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素,例如: IntTuple([2,-2,‘jr’,[‘x’,‘y’],4]) => (2,4) 如何继承内置tuple 实现IntTuple? 如果直接在init中进行修改 class IntTuple(tuple): def __init__(sel...原创 2020-02-05 19:23:55 · 100 阅读 · 0 评论 -
深入类和对象
鸭子类型和多态 鸭子类型与多态在前面基础学习中也说过多态,多态就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果的。多态的条件是 继承与重写。所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。 鸭子类型 : 动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭...原创 2020-02-04 23:03:54 · 104 阅读 · 0 评论