Py学习  »  Python

我如何知道python引擎是如何工作的?

Kalyan Kumar • 6 年前 • 2655 次点击  

我如何知道核心python将如何工作。

例如,见以下代码:

class A(object):
    def a(self):
        print 111111
    def b(self):
        self.a()

class B(A):
    def a(self):
        print 222222

当我这样做的时候

a = B()
a.b()

它正在打印

222222

如果你说“self”是类B的对象,所以它调用自己的方法,但在定义“self”是类B的对象的地方,它为什么不打印“11111”?

在哪里可以看到从类B调用“a”方法的内部逻辑?

每次我遇到这个逻辑,我都会忘记并假设它会打印“111111”,那么有什么方法可以检查内部的python行为吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52267
文章 [ 1 ]  |  最新文章 6 年前
chepner
Reply   •   1 楼
chepner    6 年前

你是在假设 self.a A.a 只是因为它发生在 A.b . 那不是真的;行为 自我。a 是由 运行时 类型 self .

自从 a B , a.b() type(a).b(a, b) B.b(a, b) . 自从 B.b 未定义,属性查找过程返回到 A、 乙 . 内部 A、 乙 , self == a ,所以我们现在有了 a.a() ,这同样相当于 type(a).a(a) == B.a(a) . 因此, A、 一个 从来没人打过电话。