数智图书馆-无锡数智政务 本次搜索耗时 3.356 秒,为您找到 1443 个相关结果.
  • 空标题文档

    1.2 基类中的init ()方法 对象的生命周期主要包括了创建、初始化和销毁。后面章节会详细讨论对象的创建和销毁,本章专注于对象的初始化。 object作为所有类的基类,已经为init ()方法提供了默认实现,一般情况下不需要重写这个函数。如果没有对它进行重写,那么在创建对象时将不会产生其他变量的实例。在某些情况下,这种默认行为是可以接受的。 对于...
  • 空标题文档

    2.5 bytes ()方法 只有很少的情景需要我们把对象转换为字节。在第2部分“持久化和序列化”中,我们会详细探讨这个主题。 通常,应用程序会创建一个字符串,然后使用Python的IO类内置的编码方法将字符串转换为字节。对于大多数情况,这种方法就足够了。只有当我们自定义一种新的字符串时,我们会需要定义这个字符串的编码方法。 依据不同的参数,byte...
  • 空标题文档

    2.7 del ()方法 del ()方法有一个让人费解的使用场景。 这个方法的目的是在将一个对象从内存中清除之前,可以有机会做一些清理工作。如果使用上下文管理对象或者with语句来处理这种需求会更加清晰,这也是第5章“可调用对象和上下文的使用”的内容。对于Python的垃圾回收机制而言,创建一个上下文比使用del ()更加容易预判。 但是,如果一个...
  • 空标题文档

    5.1 使用ABC可调用对象来进行设计 在Python中有两种创建可调用对象的简单方式,如下所示。 使用def语句创建一个函数。 通过创建继承自collections.abc.Callable类的实例。 也可以将一个变量赋值为lambda表达式。一个lambda表达式是一个小的匿名函数,其中只包含了一个表达式语句。我们不倾向于将lambda表达式保...
  • 空标题文档

    5.3 使用functools完成记忆化 Python库的functools模块中包含了记忆化的装饰器。可以重用这个模块而不必新建自己的可调用对象。 可像如下代码这样使用。 from functools import lru_cache@lru_cache(None)def pow6( x, n ):   if n == 0: return 1   ...
  • 空标题文档

    5.6 定义enter ()和exit ()方法 上下文管理器的定义包含两个特殊方法:enter ()和exit ()。with语句使用它们进行上下文的进入和退出。接下来会通过一个示例来进行说明。 我们经常使用上下文管理器来执行短暂的全局修改。可能是数据库事务状态的改变或者是锁状态的改变,亦或一些事情,只希望在事务结束前执行的逻辑,而事务结束后可以被移...
  • 空标题文档

    5.7 上下文管理器工厂 可以创建一个上下文管理器类来作为应用程序对象的工厂。这样的设计使得耦合降低,而且无需在应用程序类编写过多有关上下文管理器功能的逻辑。 假如需要一个Deck类来完成21点中的发牌。可它并非像听起来那样有用。对于单元测试,将需要一个完整的、模拟的deck对象和特殊序列的牌。它有一个优势,正如之前看到的,可以和上下文管理器类一起工作...
  • 空标题文档

    6.2 特殊方法示例 通过观察21点中的Hand对象,会发现有一个很有趣的关于包含关系的例子。我们常常会想知道玩家的手中是否有ace。如果我们用扩展list的方式来定义Hand,那么我们就不能直接查询是否有ace。取而代之的是,我们只能查询某张牌。我们不想写类似下面这样的代码。 any( card(1,suit) for suit in Suits )...
  • 空标题文档

    6.6 创建一种新的映射 Python中内置了dict映射,在库中也有许多映射类型。除了collections模块对dict的扩展(defaultdict、Counter和ChainMap)之外,库中还有一些模块包含了类似于映射的结构。 shelve模块是其他映射的一个重要示例。我们会在第10章“用Shelve保存和获取对象”中介绍它。dbm模块与sh...
  • 空标题文档

    7.4 计算一个数字的哈希值 我们需要恰当地定义hash ()方法。关于数值类型哈希值计算,也可参见Python标准库(Python Standard Library)中的4.4.4节部分。那部分定义了一个hash_fraction()函数,是我们所推荐的一种做法。下面是我们的一种做法。   def hash ( self ):     P = sy...