前言
Python是我第一门接触到的面向对象的语言,很久前学过Pyhton的基础语法,和大多数人一样,学了基础过后了解了很多方向,学过一点基于requests的爬虫,也了解过基于pygame的游戏开发相关知识,也了解过python的numpy科学计算库。到现在也有一段时间了,也差不多都忘了,感觉还是个小白。现在想回来继续python的面向对象学习,不曾想一来就犯了这么低级的错误。。。
从面向过程到面向对象,其实也好理解,感觉类似于在写头文件并实现接口的过程就是创建类,实现的接口函数可以说方法。但是总感觉有点不习惯。。。刚接触面向对象,还得深入学啊TAT
Python创建类实例
代码很简单,就是构造了一个类,然后构造了一些对类中成员的操作方法。老手可能一眼就已经发现我的错误在哪了。。。对照视频学习的时候看着代码也是一样的啊。。我的咋就跑不起来呢。。甚至一度怀疑是我的idle抽风了(其实是我抽了。。。)下面是我错误的代码
class StudentGPA:
def _init_(self,name,num,allcredits,points):
self.name = name;
self.num = num;
self.credits = float(allcredits);
self.points = float(points);
def getName(self):
return self.name,self.num;
def getCredits(self):
return self.credits;
def getPoint(self):
return self.points;
def GPA(self):
return self.points / self.credits;
def makeStudent(infoStr):
#infoStr为文件中的一行内容,创建一个学生对象,返回StudentGPA对象
name,num,allcredits,points = infoStr.split("\t");
return StudentGPA(name,num,allcredits,points);
#输入读入数据的文本文件名,以读方式打开
filename = input("Enter name the grade file:");
fp = open(filename,"r");
#从文件中读入一行,创建第一个学生对象
best = makeStudent(fp.readline());
#计算GPA最高,best对象存放GPA最高的学生
for line in fp:
s = makeStudent(line);
if s.GPA() > best.GPA():
best = s;
#关闭文件
fp.close();
print("成绩最好的学生是:", best.getName());
print("学分:",best.getCredits());
print("GPA:",best.GPA());
Python创建类时发生错误
程序一跑,提示错误,TypeError:StudentGPA() takes no arguments?
我的类没有参数??
Enter name the grade file:students.txt
Traceback (most recent call last):
File "/Users/liuxin/Desktop/Python/面向对象/StudentGPA.py", line 30, in <module>
best = makeStudent(fp.readline());
File "/Users/liuxin/Desktop/Python/面向对象/StudentGPA.py", line 23, in makeStudent
return StudentGPA(name,num,allcredits,points);
TypeError: StudentGPA() takes no arguments
错误类型CSDN一下
终于发现错误了。。就是下面这一行:
def _init_(self,name,num,allcredits,points):
左右少下划线。。。
正确代码:
def __init__(self,name,num,allcredits,points):
然后就可以正确运行了!
Enter name the grade file:students.txt
成绩最好的学生是: ('Llllx', '5601117150')
学分: 101.0
GPA: 0.04455445544554455