python类包含另一个类的实例,该对象将首先被调用

时间:2017-11-21 10:30:56

标签: python

我的示例代码如下:

class Foo:
    def __init__(self):
        self.age = 0

    def __str__(self):
        return str(self.age)

class Bar:
    obj_foo = Foo()
    print obj_foo 
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return str(self.name)

obj_bar = Bar("Sam")  
print obj_bar

我想知道执行流程。谁能帮助我理解?

1 个答案:

答案 0 :(得分:4)

旧学校调试

print(0)
class Foo:
    print(1)
    def __init__(self):
        print(2)
        self.age = 'Age'

    def __str__(self):
        print(3)
        return str(self.age)

class Bar:
    print(4)
    obj_foo = Foo()
    print(obj_foo)
    def __init__(self, name):
        print(5)
        self.name = name

    def __str__(self):
        print(6)
        return str(self.name)

print(7)
obj_bar = Bar("Sam")
print(obj_bar)
print(8)

我的FORTRAN老师会自豪!

输出:

0
1
4
2
3
Age
7
5
6
Sam
8

所以这是订单:

  • 开始编写脚本
  • 定义了Foo类
  • 类别栏已定义
  • 一个Foo被实例化
  • 打印Foo
  • 印刷Foo的年龄
  • 脚本继续
  • 实例化一个栏
  • 打印栏
  • 栏的名称已打印
  • 脚本完成

Spyder + pdb

对于更复杂的脚本,使用专用工具可能是个好主意。例如spyder pdb

如果您使用Anaconda安装了Python,则无需安装任何其他内容。

使用Debug>运行脚本调试(Ctrl + F5),多次按Ctrl + F10查看执行,如果要进入函数或方法,请按Ctrl + F11。