【问题标题】:Understanding the “self” keyword in python理解python中的“self”关键字
【发布时间】:2019-03-25 23:37:30
【问题描述】:

以下源代码用作 HashTable 的“简单”实现。这绝不是一个很好的实现,但它证明了我的担忧:

经过测试,此代码可用于其预期目的。我不明白 contains 方法是如何工作的。如果密钥在 self.buckets 中,“_ = self[key]”行将毫无问题地执行。据我了解,该行应该是“_ = self.buckets[key]”。为什么 self[key] 工作得一样好? self[key] 如何表明我们正在从 self.buckets 中检索项目?

【问题讨论】:

  • 你好,不要贴代码图片,而是粘贴代码并在编辑器中格式化。
  • __getitem__ 处理类对象上类似字典的访问,self['item'] == self.__getitem__('item')
  • 理解非常重要:self 不是关键字。它是传统上赋予方法的第一个参数的名称。当在实例上调用方法时,实例会自动绑定到该方法并“神奇地”作为第一个参数传递。但你可以调用第一个参数banana 或任何你想要的,这没关系

标签: python hashmap jupyter-notebook


【解决方案1】:

self[key] 部分使用上面定义的__getitem__ 方法,它本身就是self.buckets[...] 的包装器。所以它使用的是self.buckets,只是去掉了一步。

语法self[key] 本质上是Hashtable.__getitem__(self, key) 的缩写,其中self 是您的Hashtable 实例。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    相关资源
    最近更新 更多