类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。
实例化:根据类来创建对象被称为实例化。
属性:通过实例可以访问的变量被称为属性。
方法:类中的函数被称为方法。
__init__()
方法在每次根据类创建实例时,python都会自动运行__init__()
方法,类中的任何方法至少都需要包含一个形参self,且该形参必须位于其他形参前面。具体使用方法如下实例所示:
#Python中约定类名的首字母大写
class Student():
def __init__(self, name, sex, age):
#使用self.前缀定义的属性(变量)可以供类中所有的方法使用,也可以通过实例对其进行访问
self.name = name
self.sex = sex
self.age = age
#类中所有的方法都需要包含形参self
def student_info_show(self):
#在类的方法中可以对类中带有self.前缀的变量进行访问
print(str(self.name) + " is a(n) " + str(self.age) + " years old " + str(self.sex))
#创建一个实例student_1
student_1 = Student('Xiaoming', 'Boy', 12)
#通过实例student_1调用类中定义的方法
student_1.student_info_show()
#通过实例student_1访问类中的属性(变量)
print("Name is " + str(student_1.name))
上述代码的运行结果如下所示:
Xiaoming is a(n) 12 years old Boy
Name is Xiaoming
在实际使用中我们可以根据类创建任意数量的实例。具体使用方法如下实例所示:
class Student():
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def student_info_show(self):
print(str(self.name) + " is a(n) " + str(self.age) + " years old " + str(self.sex))
#创建一个实例student_1
student_1 = Student('Xiaoming', 'Boy', 12)
student_1.student_info_show()
#创建一个实例student_2
student_2 = Student('Xiaohong', 'Girl', 11)
student_2.student_info_show()
上述代码的运行结果如下所示:
Xiaoming is a(n) 12 years old Boy
Xiaohong is a(n) 11 years old Girl
在编写类时,也可以使用继承的方法来基于另一个现成的类创建新的类。一个类继承另一个类时,它会自动获得另一个类的所有属性和方法。原有的类称为父类,新类称为子类。子类继承了父类所有的属性和方法,同时还可以定义自己的属性和方法。
class Student():
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def student_info_show(self):
print(str(self.name) + " is a(n) " + str(self.age) + " years old " + str(self.sex))
class MyStudent(Student):
def __init__(self, name, sex, age, grade):
super().__init__(name, sex, age)
self.grade = grade
my_stu = MyStudent('Xiaopeng', 'Boy', 10, 6)
my_stu.student_info_show()
print("Name: " + str(my_stu.name))
print("Sex: " + str(my_stu.sex))
print("Age: " + str(my_stu.age))
print("Grade: " + str(my_stu.grade))
上述代码的运行结果如下所示:
Xiaopeng is a(n) 10 years old Boy
Name: Xiaopeng
Sex: Boy
Age: 10
Grade: 6