问一个 Python 小白问题

2019-09-18 17:15:03 +08:00
 zhoudaiyu

程序是这样的:

def a(): print("a")

class b(object): print("b")

if name == 'main': b()

运行结果是:b

想问的问题是:( 1 )为什么 a 方法没有被执行 ( 2 )为什么 b 类没有实例化却执行了里面的 print ( 3 )为啥在 main 方法中实例化了对象,但没有执行 print 方法

去 google 查了但是好像没啥解释的(也许搜的问题不对?)。求大佬解答!

2913 次点击
所在节点    Python
23 条回复
ipwx
2019-09-19 00:21:52 +08:00
@zhoudaiyu 我解释地很清楚了,重复一遍:

“如果你执行这个文件,b 已经被实例化了。但是 print b 不是因为 b 被实例化,而是因为你在 B 类被定义阶段执行了这句话。实例化的代码要写在类的 __init__ 函数里。”

第一句话是指出你的问题,“b 没有被实例化却执行了 print("b")”,是错的,因为 b 确实被实例化了。第二句话,指出你的代码,b 不需要被实例化,print("b") 就已经被执行了。
aaronhua
2019-09-19 10:25:28 +08:00
终于看懂了这个问题。盲猜,楼主的代码是在交互模式下执行的。然后,才根据顺序提出的三个问题。究其原因,就是类 b 在定义的时候,就执行了 print ( b )。话说,写 python 一年了,才知道这个细节。
SjwNo1
2019-09-19 13:55:35 +08:00
先 markdown 啊 头疼哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX