小编Asa*_*svi的帖子

super()究竟在Python 3中返回什么?

从Python3的文档super()"返回一个代理对象,它将方法调用委托给父类或兄弟类的类型." 那是什么意思?

假设我有以下代码:

class SuperClass():
    def __init__(self):
        print("__init__ from SuperClass.")
        print("self object id from SuperClass: " + str(id(self)))

class SubClass(SuperClass):
    def __init__(self):
        print("__init__ from SubClass.")
        print("self object id from SubClass: " + str(id(self)))
        super().__init__()


sc = SubClass()
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

__init__ from SubClass.
self object id from SubClass: 140690611849200
__init__ from SuperClass.
self object id from SuperClass: 140690611849200

这意味着,在该线super().__init__(),super()正在返回其然后隐式地传递到父类的当前对象__init__()的方法.这是准确的还是我错过了什么?

简单来说,我想了解以下内容:

什么时候super().__init__()跑,

  1. 究竟是什么传递给了__init__()怎么样?我们正在调用它,super()所以无论返回什么,都应该__init__()从我对Python的理解到目前为止传递给方法.
  2. 我们为什么不self进入super().__init__() …

python inheritance python-3.x

8
推荐指数
2
解决办法
2651
查看次数

当我刚将文件添加到暂存区时,为什么 Git 会将文件存储在存储库中?

据我了解,当您git add创建文件时,它只是在将文件添加到存储库之前暂存该文件,但为什么我可以在提交之前看到它已添加到 git 存储库中?

例如,如果我创建一个新的 git 存储库并创建一个名为的新文件foo并将内容“hello world”添加到其中,然后,我会在该文件夹内的子目录git add foo中看到一个新项目。我什至可以使用命令查看文件内新文件的内容。objects.gitobjectsgit cat-file -p

文件夹中到底添加了什么.git/objects?从技术上讲,暂存文件有什么作用?git add比如对文件运行a 后会发生哪些步骤?如果我知道步骤,也许我会更好地理解它。

git git-add .git-folder

4
推荐指数
1
解决办法
381
查看次数

如何从Ruby中的Enumerator对象实际获取值?

我对如何从Enumerator对象中获取值感兴趣.在下面的一段代码中,我期待第一次enum.next调用引发异常,因为enum在调用之后已经收到了所有值enum.to_a.

enum = Enumerator.new do |yielder|
  yielder.yield 1
  yielder.yield 2
  yielder.yield 3
end

p enum.to_a # => [1, 2, 3]

puts enum.next # Expected StopIteration here
puts enum.next
puts enum.next
puts enum.next # => StopIteration exception raised
Run Code Online (Sandbox Code Playgroud)

调用next与迭代器方法之间的区别to_aEnumerator什么?

ruby enumerator

3
推荐指数
1
解决办法
263
查看次数

在哈希查找中,符号如何比字符串更快?

我理解为什么应该使用符号而不是哈希中的字符串的一方面。也就是说,内存中只有一个给定 Symbol 的实例,而给定 String 可能有多个具有相同值的实例。

我不明白的是,在哈希查找中,符号如何比字符串快。我看过这里的答案,但我仍然不太明白。

如果:foo.hash == :foo.object_id返回true,那么它会有意义,因为这样它就可以使用对象 id 作为哈希值,而不必每次都计算它。然而,情况并非如此,:foo.object_id也不等于:foo.hash. 因此我的困惑。

ruby hash symbols hashmap

2
推荐指数
1
解决办法
970
查看次数

为什么Array#inject被称为注入?

我理解它的用法和用途,Array#inject但为什么要调用它inject?我不明白在哪里注入了什么.

ruby arrays inject

1
推荐指数
1
解决办法
345
查看次数