[其他] 为什么 打印出来None。困惑好久。

abcgoup 2009-03-27
大家好: 这是 《简明Python教程·chm.chm》中的一段程序(我自己敲的)
结果:
(Initialized SchoolMember: Mrs Shrividya)
(Initialized teacher Mrs Shrividya)
(Initialized SchoolMember: Swaroop)
(Initizlized a student Swaroop)
Name:"Mrs Shrividya" Age:"40" Salary: "30000"
None
Name:"Swaroop" Age:"22" Marks: "75"
None
Represent a teacher

这里没什么会多两个 None。我找了很久原因,都没有找出来。请大家帮忙指教。。非常感谢。

#filename:inherit.py
########################################################################
class SchoolMember:
	"""Represent a school member"""

	#----------------------------------------------------------------------
	def __init__(self,name, age):
		"""Constructor"""
		self.name = name 
		self.age = age
		print '(Initialized SchoolMember: %s)' %self.name
		
	def tell(self):
		'''Tell my details.'''
		print 'Name:"%s" Age:"%s"' % (self.name, self.age),
		
########################################################################
class Teacher(SchoolMember):
	"""Represent a teacher"""

	#----------------------------------------------------------------------
	def __init__(self,name ,age,salary):
		"""Constructor"""
		SchoolMember.__init__(self,name,age)
		self.salary = salary
		print '(Initialized teacher %s)' %self.name
		
	def tell(self):
		SchoolMember.tell(self)
		print 'Salary: "%d"' % self.salary
				

########################################################################
class Student(SchoolMember):
	"""Represent a student"""

	#----------------------------------------------------------------------
	def __init__(self,name,age,marks):
		"""Constructor"""
		SchoolMember.__init__(self,name,age)
		self.marks = marks
		print '(Initizlized a student %s)' %self.name
		
	def tell(self):
		SchoolMember.tell(self)
		print 'Marks: "%d"' % self.marks

  
		
t = Teacher('Mrs Shrividya',40,30000)
s= Student('Swaroop',22,75)

members =[t,s]
for member in members:
	print member.tell()
香克斯 2009-03-30
print member.tell() 

你的tell()方法有返回值吗?
abcgoup 2009-03-31
香克斯 写道
print member.tell() 

你的tell()方法有返回值吗?


你是对的。
在Python中方法的默认返回值是None。
所以打印除了None 这是与其它程序设计语言不同的地方。

谢谢!
phyeas 2009-04-01
js的函数默认返回undefined
linychuo 2009-04-15
print member.tell()  将这个print 去掉就可以了,因为你在class里的tell方法已经print了,所以这里不需要再print了.
abcgoup 2009-05-18
linychuo  和香克斯
是对的。


在Python中方法的默认返回值是None。
所以打印除了None 这是与其它程序设计语言不同的地方。 

该贴已结!
Global site tag (gtag.js) - Google Analytics