python练习题之面向对象(二)

# 1、python面向对象编程中,内置方法__str__、__add__如何使用,可以代码举例
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b

def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)

def __add__(self, other):
return Vector(self.a + other.a, self.b + other.b)

v1 = Vector(2, 10)
v2 = Vector(5, -2)
v3 = Vector(10, 10)
print(v1+v2+v3)


# 2、设计一个车类,属性:车的类型、车的速度、
# 分别再建立两个子类:小汽车类、电动汽车类 去继承车类
# 为了实现汽车增加能源的方式,在父类中添加 一个增加能源方法 increased_energy() 做出抽象方法
# 实现小汽车类加 油 电动汽车充电的不同实现
from abc import ABCMeta,abstractmethod
class vehicle(metaclass=ABCMeta): #车类
def __init__(self,mold,speed):
self.mold=mold
self.speed=speed

@abstractmethod
def increased_energy(self):
pass

class car(vehicle): #车的子类,小汽车类,继承父类的构造方法

def __init__(self,mold,speed):
vehicle.__init__(self,mold,speed)

def increased_energy(self):
print(self.mold+'需要加油,能达到速度',self.speed)

class bus(vehicle): #车的子类,电动汽车类,继承父类的构建方法
def __init__(self,mold,speed):
vehicle.__init__(self,mold,speed)

def increased_energy(self):
print(self.mold+'需要加油,能达到速度',self.speed)

car1=car('小汽车',120)
car1.increased_energy()

bus01=car('公共汽车',80)
bus01.increased_energy()

# 3、设计一个数据类型类 DataType ,包含一个抽象方法 length 方法,
# 并建立多个子类(Dict、List、String、Tuple)对length 方法进行实现:
# 如Dict子类 实现length方法功能,输出显示“字典形式的数据,包含3个项”,依次类推
# 创建一个get_length方法,能实现传入不同的子类对象,输出不同的求长度的结果
from abc import ABCMeta,abstractmethod
class DataType(metaclass=ABCMeta): #抽象类DataType
@abstractmethod
def length(self): #抽象方法length
pass

class Dict(DataType):
def length(self):
print('字典形式的数据,包含3个项')

def get_length(self,object):
return len(object.keys())

class List(DataType):
def length(self):
print('列表形式的数据,包含3个项')

def get_length(self,object):
return len(object)

class String(DataType):
def length(self):
print('字符串形式的数据,包含3个项')
def get_length(self,object):
return len(object)

class Tuple(DataType):
def length(self):
print('元组形式的数据,包含3个项')

def get_length(self,object):
return len(object)

dict = Dict()
dict01= dict.get_length({'id':23,'name':3,'value':2})
print(dict01)

dict = List()
dict01= dict.get_length([23,3,2,99,77])
print(dict01)

dict = Tuple()
dict01= dict.get_length((23,3,2,56,'iji'))
print(dict01)

dict = String()
dict01= dict.get_length('232')
print(dict01)

# 4、在异常处理中这些try、except、else、finally、raise有什么含义
#try:捕会出现异常的代码
#except:捕获异常并处理
#else:没有发生异常,就执行此语句
#finally:无论是否发生,都执行此异常
try:
num=int(input('请输入0-4以内的数字:'))
list1=[44,55,88,32,15]
print(list1[num])
except IndexError as e:
print('数据越界了')
else:
print('输入正常')
finally:
print('程序结束了')
#raise:引发一个异常
def abcErr():
raise Exception('抛出一个异常')
print('hello')
try:
abcErr()
except Exception as x:
print(x)
# 5、创建一个用户自定义异常UsernameInputError,如果用户用户名输入错误,能通过捕获错误并提示用户名***输入错误
def UsernameInputError(a):
username=input('请输入用户名:')
if a!=username:
raise Exception('用户名'+username+'输入错误')

try:
UsernameInputError('admin123')
except Exception as u:
print(u)


# 6、调研完成python读取 .ini文件 以及 读取yaml文件的实现

file1 = 'E:\桌面\自动化测试项目\homework\data\in.ini'
str=open(file1,'r',encoding='utf-8')
a=str.read()
print(a)

yamlPath = 'E:\桌面\自动化测试项目\homework\data\user.yaml'
str=open(file1,'r',encoding='utf-8')
a=str.read()
print(a)







原文地址:https://www.cnblogs.com/tingting-yang/p/13181049.html