2017-05-08 64 views
0

我不确定是否有人问过这个问题,但是我找不到是我正在寻找的,所以我们走了。 我已经创建了一个名为xxx.py的模块。这是什么里面:导入的模块打印出无

class A(object): 
    def aaa(self): 
     print "Ahaaaa!!!!!!!!!!!!!!!" 

我也有另外一个脚本ex45.py:

from xxx import A 

xxx = A() 
print xxx.aaa() 

当我运行python ex45.py我得到如下:

PS E:\python\ex\ex45> python ex45.py 
Ahaaaa!!!!!!!!!!!!!!! 
None 

为什么会出现那'无'?

我的purpouse是编写multipe脚本,我创建了我想在另一个脚本中使用的类。我相信有更好的代码编写方式,但我现在正在学习python,并且想了解一切如何运作。

P.S .:我使用python 2.7.9。并从这本书中学习了解Python是一个很难的方法。

+5

因为您的打印将打印方法的返回。你没有明确地返回任何东西,所以默认情况下该方法将返回'None'。再次尝试一次,返回42,看看会发生什么。 – idjaw

+3

它是'aaa()'*的*输出。由于'aaa()'不会显式地返回任何东西,它会隐含地返回'None'。 –

+0

我已经尝试过返回42而不是无我得到42. 有没有一种方法可以获得返回值的id,并且只打出'Ahaaaa !!!!!'? – Ragoczy

回答

4

这是因为您的aaa()方法返回None。你打印出一些东西,然后你也打印出返回的值。试试这个:

from xxx import A 

xxx = A() 
xxx.aaa() 

这(一个在时间):

class A(object): 
    def aaa(self): 
     return "Ahaaaa!!!!!!!!!!!!!!!" 

看看会发生什么。

0

aaa方法打印出"Ahaaaa!!!!!!!!!!!!!!!"并返回任何内容(在Python中什么都不返回任何东西实际上返回None)。然后,在ex45.py中打印返回值aaa,即None

为了解决这个问题,你既可以做xxx.aaa()(不print荷兰国际集团),或在aaa方法的返回"Ahaaaa!!!!!!!!!!!!!!!",而不是print荷兰国际集团它。