创建和使用类
- 在python中首字母大写的名称指的是类。类的定义中括号是空的。
- 类中的函数称为方法。
- 方法_init_()是一个特殊的方法,每次根据类创建新的实例时,python都会自动运行它。这个可以有多个形参,其中self是必须有的,而且在其他形参前面。
- self是指向实例本身的引用,让实例能够访问类中的属性和方法。
- 创建实例时,只用给其他的形参提供值。
class Classmate():
def __init__(self,name,age):
self.name=name
self.age=age
def Introduce(self):
print("My name is "+self.name.title()+", I'm "+str(self.age)+" years old.")
def Teacher(self):
print(self.name.title()+" ,welcome!")
- 创建实例
My_classmate=Classmate("Yang",20)
print(My_classmate.name.title())
print(str(My_classmate.age))
输出结果
Yang
20
调用方法
My_classmate.Introduce()
My_classmate.Teacher()
输出结果
My name is Yang, I'm 20 years old.
Yang ,welcome!
使用类和实例
- 指定属性默认值
class Classmate():
def __init__(self,name,age):
self.name=name
self.age=age
self.clas=3
def Introduce(self):
print("My name is "+self.name.title()+", I'm "+str(self.age)+" years old.")
def Teacher(self):
print(self.name.title()+" ,"+str(self.clas)+" class welcome you!")
My_classmate=Classmate("Yang",20)
My_classmate.Introduce()
My_classmate.Teacher()
输出结果
My name is Yang, I'm 20 years old.
Yang ,3 class welcome you!
- 直接修改属性的值
My_classmate.clas=1
My_classmate.Introduce()
My_classmate.Teacher()
输出结果
My name is Yang, I'm 20 years old.
Yang ,1 class welcome you!
- 通过方法修改属性的值
class Classmate():
def __init__(self,name,age):
self.name=name
self.age=age
def Clas(self,c):
self.clas=c
def Introduce(self):
print("My name is "+self.name.title()+", I'm "+str(self.age)+" years old.")
def Teacher(self):
print(self.name.title()+" ,"+str(self.clas)+" class welcome you!")
My_classmate=Classmate("Yang",20)
My_classmate.Clas(3)
My_classmate.Introduce()
My_classmate.Teacher()
输出结果
My name is Yang, I'm 20 years old.
Yang ,3 class welcome you!
继承
- 定义子类必须在括号内指定父类的名称
- super()可以将子类和父类关联起来
class Classmate():
def __init__(self,name,clas):
self.name=name
self.clas=clas
self.age=20
def Up_age(self,age):
if age>=self.age:
self.age=age
else:
print("you error!!")
def Increase_age(self,age):
self.age+=age
def Introduce(self):
print("My name is "+self.name.title()+", I'm "+str(self.age)+" years old.")
def Teacher(self):
print(self.name.title()+" ,"+str(self.clas)+" class welcome you!")
class Schoolmate(Classmate):
def __init__(self,name,clas):
super().__init__(name,clas)
mate=Schoolmate("Yang",3)
mate.Introduce()
输出结果
My name is Yang, I'm 20 years old.
- 给子类定义属性和方法
class Schoolmate(Classmate):
def __init__(self,name,clas):
super().__init__(name,clas)
self.grade=2017
def Up_grade(self):
print(self.name+" is a "+str(self.grade)+" student.")
mate=Schoolmate("Yang",3)
mate.Up_grade()
输出结果
Yang is a 2017 student.
- 重写子类方法
class Schoolmate(Classmate):
def __init__(self,name,clas):
super().__init__(name,clas)
self.grade=2017
def Up_grade(self):
print(self.name+" is a "+str(self.grade)+" student.")
def Introduce(self):
print("My name is "+self.name.title()+" , "+str(self.age)+" years old. My university is Tiedao")
mate=Schoolmate("Yang",3)
mate.Up_grade()
mate.Introduce()
输出结果
Yang is a 2017 student.
My name is Yang , 20 years old. My university is Tiedao
- 将实例作为属性
class Grade():
def __init__(self,mategrade=2017):
self.mategrade=mategrade
def Up_grade(self):
print("I am "+str(self.mategrade)+" student.")
class Schoolmate(Classmate):
def __init__(self,name,clas):
super().__init__(name,clas)
self.grade=Grade()
def Introduce(self):
print("My name is "+self.name.title()+" , "+str(self.age)+" years old. My university is Tiedao")
mate=Schoolmate("Yang",3)
mate.grade.Up_grade()
输出结果
I am 2017 student.