Python实验一 面向对象程序设计实验
一、实验目的
了解面向对象程序设计思想
了解对象、类、封装、继承、方法、构造函数和析构函数基本概念
掌握定义类、成员变量、成员函数、静态变量和静态方法
掌握通过类定义实现继承和多态的方法
掌握对象的创建和使用方法
二、实验内容(包括分析或步骤)
- 定义类和使用类
定义交通工具(Vehicle)类,定义两个成员变量:品牌(brand)、型号(type);定义构造函数,在其中通过静态变量方式设置品牌;
定义析构函数,在其中将交通工具对象的品牌和型号清空;
定义一个成员函数,在其中输出当前交通工具对象的品牌和型号;
定义一个类方法,在其中更新交通工具类的静态变量品牌和型号。
创建一个交通工具对象,设置其品牌为“audi”,型号为“A6”,然后通过对象调用其成员函数,输出其品牌和型号,销毁对象;
设置所有交通工具对象的品牌为“大众”,通过类方法,更新品牌为“奥迪”。
2. 类的继承和多态
定义一个抽象类交通工具(Vehicle)类,定义一个抽象方法(drive);
定义2个子类汽车和飞机,在子类中实现抽象方法,输出不同交通工具的驾驶情况(如果是飞机,则输出机长名字、乘务员数量和乘客数量,如果是汽车,则输出驾驶员名字,汽车型号和行驶年数)。
定义一个函数,判断输入的对象是什么类型的,然后调用drive方法输出该交通工具信息。
三、实验实现
核心代码1:
class Vehicle():
"""def __init__(self):
self.brand
self.type"""
def __init__(self, brand, type):
self._brand = brand
self._type = type
def __del__(self):
print(self._brand, "is deleted")
self._brand = ''
# self._type = ''
def set_brand(this, brand):
this._brand = brand
def out(self):
return self._brand, self._type
def main():
v = Vehicle("audi", "A6")
print(v.out())
v.__del__()
v.set_brand('Volkswagen')
print(v.out())
v.set_brand('audi')
print(v.out())
if __name__ == '__main__':
main()
运行结果1:
核心代码2:
from abc import abstractmethod, ABCMeta
class Vehicle(metaclass=ABCMeta):
@abstractmethod
def drive(self):
pass
class Car(Vehicle):
def drive(self):
print("驾驶员:%s\n汽车型号:%s\n行驶年数:%d" % ('LZG', 'AE86', 3))
class Airplane(Vehicle):
def drive(self):
print("机长:%s\n乘务员数量:%d\n乘客数量:%d" % ('lzg', 15, 66))
def run(vehicle):
print(vehicle.__class__)
vehicle.drive()
def main():
v = [Car(), Airplane()]
m = map(run, v)
list(m)
if __name__ == '__main__':
main()
运行结果2: