所以我在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的新手,希望有人可以提供帮助。
答案 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?