Python基础——类与面向对象
1. 类的定义与实例化
1.1 类的属性和方法
对象是对现实中实物的一种抽象,对象由属性和方法组成。在这里我们创建一个类作为例子:
class Student():
"""学生类,是对一个学生的抽象化表示"""
def __init__(self, name, student_id):
"""初始化属性name和student_id"""
self.name = name
self.student_id = student_id
def study(self):
"""表示该学生在学习"""
print("Student " + self.name + " is studying.")
def exam(self):
"""表示该学生正在考试"""
print("Student " + self.name + " is taking a exam.")
这里我们定义了类Student
,拥有属性name
和student_id
。我们还定义了两个方法study
,exam
,用来表示学生的行为。值得注意的是,__init__()
方法将会在创建一个类的实例时被自动调用,且只被调用这一次。所有属性的初始化和其他在初始化一个类的时候需要执行的操作都可以写在__init__()
方法中。另外,self
关键词为一个指向类实例的引用,当类被创建时就可以用self
来访问实例的属性。
1.2 实例化一个类
下面我们实例化Student
类,并且调用类的方法。
示例代码如下:
student1 = Student(name='Joey', student_id='001')
student2 = Student(name='Rhona', student_id='002')
student1.study()
student2.exam()
以下为运行结果:
Student Joey is studying.
Student Rhona is taking a exam.
2. 面向对象
2.1 python中类的继承
python中的类有继承机制,子类对于父类的继承将继承父类所有的属性和方法。当然,子类可以拥有自己的方法,也可以重写父类的方法。
class Monitor(Student):
"""班长类"""
def __init__(self, name, student_id):
"""初始化属性"""
super().__init__(name, student_id)
def roll_call(self):
"""点名"""
print("Monitor " + self.name + " is now calling the roll.")
这里我们定义了一个Monitor
类,代表班长,继承了父类Student
。其中super.__init__()
语句调用了父类的构造函数,用于对于子类属性的初始化。子类拥有所有父类的方法,并且拥有自己的方法roll_call
。见如下代码:
monitor = Monitor(name='Peter', student_id='003')
monitor.study()
monitor.roll_call()
以下为运行结果:
Student Peter is studying.
Monitor Peter is now calling the roll.