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()


