首页 > 其他分享 >练习3:面向对象

练习3:面向对象

时间:2024-01-17 20:44:54浏览次数:28  
标签:.__ car self 练习 面向对象 def type card

#请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息。

设定

1) 出租车类:

属性包括:车型,车牌,所属出租公司;方法包括:启动,停止

2) 家用轿车类:

属性包括:车型,车牌,车主姓名;方法包括:启动,停止

要求

1) 分析出租车和家用轿车的公共成员,提取出父类—汽车类

2) 利用继承机制,实现出租车类和家用轿车类

3) 编写测试类,分别测试汽车类,出租车类和家用轿车类对象的相关方法

4) 定义名为car的包存放汽车类,出租车类,家用轿车类和测试类

abstractmethod是Python中的一个装饰器,用于表示一个方法是抽象方法。

抽象方法必须在子类中实现,否则子类也需要声明为抽象类。

使用abstractmethod可以提高代码的可读性和可维护性。

from abc import abstractmethod


class Car:
    def __init__(self, car_type, car_card):
        self.__car_type = car_type
        self.__car_card = car_card

    def set_car_type(self, car_type):
        self.__car_type = car_type

    def get_car_type(self):
        return self.__car_type

    def set_car_card(self, car_card):
        self.__car_card = car_card
    def get_car_card(self):
        return self.__car_card

    @abstractmethod
    def star(self):
        print('我是车,我启动')

    @abstractmethod
    def stop(self):
        print('我是车,我停止')


class Taxi(Car):
    def __init__(self, car_type, car_card, company):
        super().__init__(car_type, car_card)  #super 可以让子类去访问父类的类成员
        # self.__car_type = car_type
        # self.__car_card = car_card
        self.__company = company

    def set_company(self, company):
        self.__company = company

    def get_company(self):
        return self.__company

    def star(self):
        print('乘客您好')
        print(f'我是{self.__company}的,我的车牌是{self.get_car_card()},您要去哪里?')

    def stop(self):
        print('目的地已到,请您付费下车,欢迎下次再次乘坐')

    # def start(self):
    #     pass


class FamilyCar(Car):
    def __init__(self, car_type, car_card, user_name):
        super().__init__(car_type, car_card)
        # self.__car_type = car_type
        # self.__car_card = car_card
        self.__user_name = user_name

    def set_user_name(self, user_name):
        self.__user_name = user_name

    def get_user_name(self):
        return self.__user_name

    def star(self):
        print(f'我是{self.__user_name},我的汽车我做主')

    def stop(self):
        print('目的地到了,我们去玩吧')


if __name__ == '__main__':
    c1 = Car('车', '皖ABC')
    c1.star()
    c1.stop()
    print('=' * 30)
    c2 = FamilyCar('梅赛德斯奔驰迈巴赫S600', '皖A88888', '武大郎')
    c2.star()
    c2.stop()
    print('=' * 50)
    c3 = Taxi('出租车', '京B123', '景顺出租车公司')
    c3.star()
    c3.stop()

标签:.__,car,self,练习,面向对象,def,type,card
From: https://www.cnblogs.com/T3h4t5-Blog90/p/17971137

相关文章

  • 30.定语从句-定语从句的练习-1
    练习夜莺用生命换来的玫瑰花被扔掉了Therose___that/which___thenightingale(夜莺)exchangedwithhislifewasdiscarded(抛弃,扔掉)。 withhislifewasdiscarded——是介词短语,不能做宾语。 这些圆顶的建筑物看起来很漂亮。Buildings____whose___roofsareroun......
  • 面向对象
    面向对象面向对象概述###面向对象是基于过程来的事想,在程序中创建实例化对象,指挥对象做事情(指挥官)1.面向对象开发1.1语法格式classPeople:defsend_emmail(self,name)print(f'发送邮件给{name}')p1=People()p1.send_email('马云')2.类中的函数定义在p......
  • 练习
    在控制台中输出99乘法表(做出之后,想一想能不能使用一行代码生成)双重for循环forjinrange(5):#外层for循环控制的行数foriinrange(5):#内层for循环控制的列数print('*',end='\t')print()print("------------------------------------------------")需求:打印三角......
  • 函数练习1
    练习:定义一个函数,函数接收2个参数,第一个参数是一个大字符串,第二个参数是一个字符,函数功能是判断该字符在大字符串中出现的次数defget_str_count(big_str,s):count=0foriinbig_str:ifi==s:count+=1print(f'{s}字符在大字符串中共出现了{count}次。。')get_str_count(......
  • Python面向对象之元类
    元类【一】概要元类是类的类,它用于定义其他类。在Python中,一切皆对象,包括类。而元类就是用来创建这些类的“类”。类是对象:在Python中,类本身也是一个对象,而元类就是用来创建这些类的对象。【二】常见用法type函数:在Python中,type函数不仅可以返回对象的类型,还可以用于创建......
  • 练习题1
    使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示,默认设置“心情好”。3)设置构造......
  • PA0:关于练习题
    练习11: 附加题:复制操作:i=0;while(i<argc){states[i]=argv[i];i++;}如果还要考虑安全性,那就在循环体里面增加判断:i=0;j=0;while(i<argc){states[i]=argv[i];i++;j++;if(j>=......
  • Python 面向对象的私有属性获取
    前言全局说明一、安装flask模块二、引用模块三、启动服务模块安装、引用模块、启动Web服务方法,参考下面链接文章:https://www.cnblogs.com/wutou/p/17963563四、面向对象的私有属性获取4.1.2classFoo:def__init__(self):self.name='wangwu'......
  • 开发日记3(java面向对象)
    (一)java面向对象1、面向过程和面向对象很久很久以前,系统学习过C语言,但也只是学过,没有产生过除了考试以外的其他价值。后来工作中很多伙伴都在使用java,虽然当时自己不写java,但很久之前就有个概念,这两种语言还是不同的,一个面向过程、一个面向对象。面向过程比较容易理解,基实过程可以理......
  • Java面向对象
    Java面向对象面向对象编程(Object-OrientedProgramming,OOP)面向对象编程本质:以类的方式组织代码,以对象的组织(封装)数据三大特性:1、封装所谓的封装就是把类的属性和方法使用private修饰,不允许类的调用者直接访问,如果想要操作这些属性使用public的get、set方法。封装的作用:不......