PyCharm控制台无明显原因输出“无”

时间:2015-08-05 03:26:47

标签: python class console pycharm string.format

所以我在Python上做了一些关于继承的教程并创建了这个类:

class Animal:
# variables with 2 underscores in front of them are private and can
# only be modified using functions inside the class
__name = ""
__height = 0
__weight = 0
__sound = ""

def __init__(self, name, height, weight, sound):
    self.__name = name
    self.__height = height
    self.__weight = weight
    self.__sound = sound

def setName(self, name):
    self.__name = name

def getName(self):
    return self.__name

def setHeight(self, height):
    self.__height = height

def getHeight(self):
    return self.__height

def setWeight(self, weight):
    self.__weight = weight

def getWeight(self):
    return self.__weight

def setSound(self, sound):
    self.__sound = sound

def getSound(self):
    return self.__sound

def getType(self):
    print("Animal")

def toString(self):
    print("{} is {} cm tall, weighs {} kilogram and says {}".format(self.__name,
                                                                    self.__height,
                                                                    self.__weight,
                                                                    self.__sound))

然后我创建了一个对象:

cat = Animal("Charlie", 38, 12, "Meow")
print(cat.toString())

但是当我运行程序时,控制台告诉我:

查理身高38厘米,体重12公斤,并说喵喵 无

我正在试图找出为什么“无”存在,因为它似乎正在做正确的事情,它正在输入我给它的所有值。我是Python的新手,希望有人可以提供帮助。

3 个答案:

答案 0 :(得分:1)

因为你的toString()方法没有返回任何内容,所以只打印字符串。

当一个方法没有返回任何内容时,默认情况下它的返回值为None,这就是你做' print(cat.toString())' ,您打印无,这是您的方法的返回值。

从函数的名称来看,似乎要从中返回值而不是在那里打印它。代码 -

def toString(self):
    return "{} is {} cm tall, weighs {} kilogram and says {}".format(self.__name,
                                                                    self.__height,
                                                                    self.__weight,
                                                                    self.__sound)

答案 1 :(得分:0)

您的toString方法正在打印句子,然后您正在调用print函数。

您可以更改def toString以返回句子:

def toString(self):
    return ("{} is {} cm tall, weighs {} kilogram and says {}".format(self.__name,
                                                                    self.__height,
                                                                    self.__weight,
                                                                    self.__sound))

或者您可以在调用方法时将打印输出:

cat = Animal("Charlie", 38, 12, "Meow")
cat.toString()

答案 2 :(得分:0)

在我的工作中发现并修复的“无”出现的另一种情况是这样的编码错误;

input(print("what is your input?"))

输出为;

what is your input?
None

如果与上面的问题不同,则问题类似,但是在这里您特别要说的是输入是打印语句,而没有获得实际输入,因此机器认为没有输入,因此输出“无”。在控制台中,您仍然可以在“ none”之后键入,它将注册为输入,但是您也可以通过取消print语句来消除它,以便...

input("what is your input?")

输出;

what is your input?