Python类在输出中给出“无”

时间:2013-05-18 07:07:16

标签: python linux class constructor

我有以下代码:

class StudentData:
    "Contains information of all students"
    studentNumber = 0;
    def __init__(self,name,age,marks):
        self.name = name;
        self.age = age;
        self.marks = marks;
        StudentData.studentNumber += 1;
    def displayStudentNumber(self):
        print 'Total Number of students = ',StudentData.studentNumber;
    def displayinfo(self):
        print 'Name of the Student: ',self.name;
        print 'Age of the Student: ', self.age;
        print 'Marks of the Student: ', self.marks;

student1 = StudentData('Ayesha',12,90)
student2 = StudentData('Sarah',13,89)
print "*Student number in case of student 1*\n",student1.displayStudentNumber();
print "Information of the Student",student1.displayinfo();
print "*Student number in case of student 2*\n",student2.displayStudentNumber();
print "Information of the Student",student2.displayinfo();

输出是:

*Student number in case of student 1*

Total Number of students =  2

None

Information of the Student Name of the Student:  Ayesha

Age of the Student:  12

Marks of the Student:  90

None

*Student number in case of student 2*

Total Number of students =  2

None

Information of the Student Name of the Student:  Sarah

Age of the Student:  13

Marks of the Student:  89

None

我无法理解为什么我的输出中会出现这些“无”。谁能解释一下呢?

3 个答案:

答案 0 :(得分:2)

你应该返回这些字符串,而不是打印它们。没有返回值的函数返回None。另外不要在Python中使用分号。

def displayStudentNumber(self):
      return 'Total Number of students = {0}'.format(StudentData.studentNumber)
def displayinfo(self):
      return '''\
Name of the Student: {0}
Age of the Student: {1}
Marks of the Student {2}'''.format(self.name, self.age, self.marks)

答案 1 :(得分:1)

因为您的函数displayStudentNumber()displayinfo()不会返回任何内容。

尝试将其更改为:

def displayStudentNumber(self):
    return 'Total Number of students = ' + str(StudentData.studentNumber)

def displayinfo(self):
    print 'Name of the Student: ',self.name;
    print 'Age of the Student: ', self.age;
    print 'Marks of the Student: ', self.marks;
    return ''

由于该函数不返回任何内容,因此默认为None。这就是它返回的原因。

顺便说一下,python中不需要分号。

答案 2 :(得分:1)

您在输出中得到None,因为您正在打印调用方法displayStudentNumber的返回值。默认情况下,这会返回None

您要么打印方法的返回值,要么只想打印。试试这样的事情,

print "Student number in case of student 1"
student1.displayStudentNumber()

def displayStudentNumber(self):
    return 'Total Number of students = %d' % StudentData.studentNumber

print "Student number in case of student 1", student1.displayStudentNumber()