面向对象的python构造函数和类方法

liv*_*hak 0 python methods class

#!/usr/bin/env python

class SportsCar(object):

        def __init__(self,make,colour):
                self.make = make
                self.colour = colour
                self.horn = "BEEEEEEEEPPPPPPP"

        def honk(self):
                #now we can make some noise!
                print self.make,'  ',self.colour,'  ',self.horn
                print "Done "


mycar = SportsCar('Honda','silver')
#print mycar.make 
#print mycar.colour

print mycar.honk()


print "Good Bye!!"
Run Code Online (Sandbox Code Playgroud)

上面代码的输出如下.

Honda    silver    BEEEEEEEEPPPPPPP
Done 
None
Good Bye!!
Run Code Online (Sandbox Code Playgroud)

输出的前两行

Honda    silver    BEEEEEEEEPPPPPPP
Done
Run Code Online (Sandbox Code Playgroud)

这是由mycar.honk()打印的.

我也理解第4行

Good Bye!!
Run Code Online (Sandbox Code Playgroud)

我不明白第三行的"无"来自哪里?有人可以解释一下吗?

另一个相关的问题

这些变化之间有什么区别

class SportsCar:
Run Code Online (Sandbox Code Playgroud)

class SportsCar(object):
Run Code Online (Sandbox Code Playgroud)

我一直在不同的地方看到这两个问题.

Mar*_*ers 9

默认情况下,函数始终具有返回值None.

您正在打印方法的返回值.honk(),这是默认值None:

print mycar.honk()
Run Code Online (Sandbox Code Playgroud)

你可以只调用mycar.honk() 没有print声明.该方法自己进行打印.