python面向对象类的综合题_python练习题之面向对象(二)

本文通过实例介绍了Python面向对象编程中的一些核心概念,包括类的定义、内置方法`__str__`和`__add__`的使用,以及类的继承和抽象方法的实现。首先展示了如何定义向量类并实现加法操作,然后设计了一个车类及其两个子类——小汽车和电动汽车,实现了不同类型的能源增加方法。接着,定义了一个抽象类`DataType`及多个子类,如Dict、List、String和Tuple,实现了`length`方法来计算不同数据类型的长度。最后,讲解了异常处理的常用结构,包括try、except、else、finally和raise,并展示了如何创建自定义异常以及读取.ini和.yaml配置文件的方法。
摘要由CSDN通过智能技术生成

# 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值