PyCharm 控制台无缘无故输出 "None"
PyCharm Console outputs "None" for no apparent reason
所以我在 Python 中做了一个关于继承的小教程并创建了这个 class:
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 公斤,会喵喵叫
None
我想弄清楚为什么 "None" 在那里,因为它似乎做的一切都是正确的,它正在输入我给它的所有值。我是 Python 的新手,希望有人能提供帮助。
因为您的 toString() 方法没有 return 它只是打印字符串的任何内容。
当一个方法没有 return 任何东西时,默认情况下它的 return 值是 None ,这就是你做 'print(cat.toString())' 的原因,你打印 None ,这是您的方法的 return 值。
从函数的名称来看,您似乎想要 return 它的值而不是在那里打印它。代码-
def toString(self):
return "{} is {} cm tall, weighs {} kilogram and says {}".format(self.__name,
self.__height,
self.__weight,
self.__sound)
您的 toString
方法正在打印句子,然后您在其上调用 print
函数。
您可以将 def toString 更改为 return 句子:
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()
我在工作中发现并修复的 None 出现的另一种情况是这样的编码错误;
input(print("what is your input?"))
输出是;
what is your input?
None
如果与上面的不一样,问题是类似的,但这里特别说输入是打印语句而没有得到真正的输入,所以机器认为没有输入所以它输出 "None"。在控制台中,您仍然可以在 "none" 之后键入,它会将其注册为输入,但您也可以通过删除 print 语句来删除它,所以...
input("what is your input?")
输出;
what is your input?
所以我在 Python 中做了一个关于继承的小教程并创建了这个 class:
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 公斤,会喵喵叫
None
我想弄清楚为什么 "None" 在那里,因为它似乎做的一切都是正确的,它正在输入我给它的所有值。我是 Python 的新手,希望有人能提供帮助。
因为您的 toString() 方法没有 return 它只是打印字符串的任何内容。
当一个方法没有 return 任何东西时,默认情况下它的 return 值是 None ,这就是你做 'print(cat.toString())' 的原因,你打印 None ,这是您的方法的 return 值。
从函数的名称来看,您似乎想要 return 它的值而不是在那里打印它。代码-
def toString(self):
return "{} is {} cm tall, weighs {} kilogram and says {}".format(self.__name,
self.__height,
self.__weight,
self.__sound)
您的 toString
方法正在打印句子,然后您在其上调用 print
函数。
您可以将 def toString 更改为 return 句子:
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()
我在工作中发现并修复的 None 出现的另一种情况是这样的编码错误;
input(print("what is your input?"))
输出是;
what is your input?
None
如果与上面的不一样,问题是类似的,但这里特别说输入是打印语句而没有得到真正的输入,所以机器认为没有输入所以它输出 "None"。在控制台中,您仍然可以在 "none" 之后键入,它会将其注册为输入,但您也可以通过删除 print 语句来删除它,所以...
input("what is your input?")
输出;
what is your input?