python中的类的创建、使用和继承
在面向对象编程中,先编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。
基于类创建对象时,每个对象都自动具备类的通用行为,同时可根据需要赋予每个对象独特的个性,在实例中存储特定信息及操作
根据类来创建对象被称为实例化
类,也可以用来扩展既有类的功能,让相似的类能够高效地共享代码
一、创建和使用类、实例
编写一个学生的类,含有名字、年龄、年级、家乡等信息,同时定义6个方法,每个方法都是简单地打印相关信息。
class Student(): def __init__(self, name, age,grade,hometown): #任何一个类,此方法必有,方法 __init__() 定义成了包含5个形参: self 、 name , age ,grade 和 hometown """ __init__() 是一个特殊的方法,当根据类来创建实例时,Python会自动运行,在这个方法的名称中,开头和末尾各有两个下划线,这是一种约 定__init__前后是两个短 _ ,并不是一个,且中间没有空格号, self ,是一个指向实例本身的引用,让实例能够访问类中的属性和方法,以 self 为前缀的变量都可 供类中的所有方法使初始化属性name,age,,grade和hometown""" self.name = name #以 self 为前缀的变量都可供类中的所有方法使用, self.name = name 获取存储在形参 name 中的值,将其存储到变量 name 中,然后该变量被关联到当前创建的实例 self.age = age #可通过实例访问的变量称为属性,name,age ,grade 和 hometown 都为类Student的属性 self.grade = grade #属性self.grade ,同时将形参grade赋值给self.grade self.hometown = hometown #属性hometown def get_name(self): #定义打印学生名字的一个方法(函数) """ print("The student"name is "+self.name.title()+".") def get_age(self): #定义打印学生年龄的一个方法(函数) """ print("The student is "+str(self.age)+" years old.") def get_grade(self): #定义打印学生家乡的一个方法 """ print("The student is grade "+str(self.grade)) def get_hometown(self): #定义打印学生家乡的一个方法 """ print("The student "+self.name.title()+" is froming "+self.hometown.title()) def do_homework(self): #定义学生的一个方法(函数),做家庭作业""" print(self.name.title()+" is doing his homework now !") def play_game(self): #定义学生做游戏 """ print(self.name.title()+" is playing game with his friend !") def get_student_info(self): #定义学生的一个方法(函数),打印学生信息""" student_info = self.name.title()+" is "+str(self.age)+" years old, and from "+self.hometown +"and grade"+str(self.grade) print(student_info) """实例化,创建两个学生 """ student_a = Student("jack",13,7,"Newyork") #创建实例 student_a ,具备类Student中的相关参数,并且相关参数与定义中的形参逐一对应,方法 __init__()中的self指的是自身,不需要参数 student_b = Student("huawei",12,7,"wuhai") #创建实例 student_b ,类中的每个属性都必须有初始值,哪怕这个值是0或空字符串,在方法 __init__() 内指定这种初始值是可行的 print("The student is "+student_a.name.title()+".") #直接调用实例中的参数 print("The student is "+str(student_a.age)+" years old.") #.title()方法是首字母大写,str()是将数字转为字符串 print(" ") #打印空行,便于查看 student_a.get_name() #实例化后,直接调用类的方法 student_a.do_homework() student_a.get_hometown() print(" ") #打印空行,便于查看 student_b.get_name() student_b.get_grade() student_b.get_age() student_b.play_game() print(" ") #打印空行,便于查看 student_a.get_student_info() student_b.get_student_info()