zoukankan      html  css  js  c++  java
  • class_10作业

    #!/user/bin/python3
    # -*- coding: utf-8 -*-
    # @Time : 2020/6/8 0008 23:48
    # @Author : lemon_小张
    # @Email :981874735@qq.com
    # @File :class_10作业.py
    # TODO

    # 1, 详细总结类和对象知识点,包括:
    '''类的属性'''

    # print("类的定义:同一类事物的 抽象描述(属性、功能)
    # 比如一家公司是一个类;而我或者我们部门只是公司的一个对象
    # 对象:
    # 属性:研发部;测试部;交互设计部;产品部;运营部等
    # 功能:开发根据需求编写代码 测试根据开发编写好的代码从功能上找出缺陷
    # 产品:根据用户的反馈或者需求编写策划文档")
    '''对象的初始化'''
    # 类里面的初始化函数使用在实例化的调用;
    # 实例化的同时,自动调用__init__。
    # __init__有几个参数,那你在实例化时,就要传几个
    # class Test:
    # def __init__(self,类属性,):
    # self.name = name self实例等于本身
    # self.dog_kind = kind
    # self.dog_age = age
    # 调用是
    # 实例 =类名
    # te = Test()#初始化时传入几个参数;对应在类名括号传入几个参数;不然会报错
    # 同时可以传参为不定长参数/*args **kwages
    '''类属性'''
    # 直接在类当中定义的。不在任何的实例方法当中
    # # 比如:age = "3个月" name = "嘟嘟"

    '''实例属性'''
    # self.属性名 self.age/self.name
    '''实例方法'''
    # 参数第一个是self
    # 实例都是可以访问类属性,类方法的。
    # 只有实例才可以访问。
    #
    '''类方法'''
    # 函数加上@classmethod 参数默认为cls。cls表示类本身。
    # 可以通过cls访问类的属性,但是不能访问实例属性。
    # 类可以访问,对象可以访问。
    '''静态方法'''
    # @staticmethod 普通函数
    # def hello():
    # print("hello")
    #
    # class Dog:
    #
    # def bark(self):
    # print("叫")
    #
    # @classmethod
    # def set_kind(cls):
    # cls.kind = "狗"
    #
    # @staticmethod
    # def hello(flag=True):
    # print("hello,dog!!")
    #
    #
    # Dog.hello()
    # d = Dog()
    # d.hello()
    '''继承'''
    # 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
    # 例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系
    #
    # 继承语法 :class 子类(父类)
    # 潜规则 - 告诉你这是私有化的,全靠对象自觉。硬要用也是可以的,不会报错。
    # 类定义时,_开头的属性 / 方法,父类内部 / 子类内部都可以用。
    # 父 / 子对象不建议使用。
    #
    # 子类和父类有同名方法的时候:
    #
    # 继承使用父类的同名方法。但是在父类的基础上,再拓展内容。
    # super().同名方法
    # 多继承:任何一个类,可以有N个父类
    # 继承来讲:自己有用自己的,自己没有用,一层层往上找
    '''重写'''
    # 重写:如果要使用父类的同名方法,使用super().同名方法名()
    '''super()函数'''

    # class Cat(Base):
    #
    # def __init__(self,name,sex):
    # super().__init__(name)
    # self.sex = sex
    #
    # def climb(self):
    # print("Cat会爬树!!")
    # self.eat() #
    #
    # def sleep(self):
    # # 完全覆盖。一点都不用父类的。
    # # print("cat呼呼大睡!!!")
    # # 继承使用父类的同名方法。但是在父类的基础上,再拓展内容。
    # super().sleep()
    # print("我使用爸爸睡觉的姿势,顺便再加了一个姿势!!")
    #
    #
    #
    # c = Cat("英短","母")
    # c.sleep()
    '''2, 定义一个类 Dog, 包含 2 个属性:名字和年龄。
    定义一个方法 eat 吃东西。
    定义一个类 TeddyDog, 继承 Dog 类, Teddy 在吃东西的时候还会望着你, 定义方法 watch_you.
    定义一个类 BabyTeddyDog, 继承 TeddyDog, BabyTeddy 吃东西不仅会望着你,还会四处转悠, 定义方法 go_around
    '''
    print("2题*******************************************************")
    class Dog:
    def __init__(self,name,age):#初始化函数,定义名字和年龄
    self.name=name
    self.age=age
    def eat(self):
    return F"{self.name}现在{self.age}岁,它正在吃东西!!"
    class TeddyDog(Dog):
    def watch_you(self):
    return F"{super().eat()},不仅会望着你"
    class BabyTeddyDog(TeddyDog):
    def go_around(self):
    return F"{super().watch_you()},,还会四处转悠"

    Teddy=TeddyDog("Teddy",16)
    print(Teddy.eat())
    print(Teddy.watch_you())
    Teddy1=BabyTeddyDog("Teddy",16)
    print(Teddy1.go_around())


    # 二、选作题(不需要提交)
    # 1.编写如下程序
    # 编写一个工具箱类和工具类
    #
    # 工具类:需要有工具具的名称、功能描述、价格。
    #
    # 工具臬类:能够添加工具、删除工具、查看工具,并且能获取工具箱中工具的总数。
    #
    # 比如锤子、斧头、螺丝刀等工具。
    print("二题*********************************************")
    tool_list = {}
    tools_list = []
    class Tools:

    def __init__(self, name, Features=None, price=None):
    self.name = name
    self.Features = Features
    self.price = price

    def save(self):
    tools_info = dict(name=self.name,Features=self.Features,price=self.price)
    tool_list[self.name] = [tools_info]
    return tool_list
    class ToolCase(Tools):
    @staticmethod
    def del_tool(name):
    if name in tools_list:
    tools_list.remove(name)
    return tools_list
    else:
    return '您要删除的工具不存在'

    def add_tool(self):
    tools_list.append(self.name)

    def get_tool(self):
    return tools_list

    def total_tool(self):
    return len(tools_list)
    tool01 = Tools('大刀', Features='劈柴', price=100)
    tool02 = Tools('西瓜刀', Features='砍西瓜', price=50)
    tool01.save(), tool02.save()
    print(tool_list)
    tools01 = ToolCase('大刀')
    tools01.add_tool()
    tools02 = ToolCase('西瓜刀')
    tools02.add_tool()
    print(tools02.get_tool())
    print(tools01.total_tool())
    print(tools01.del_tool('狗子'))
  • 相关阅读:
    C#中,对Equals()、ReferenceEquals()、==的理解
    C#语言中的Main()可以返回int值
    C#中支持的运算符
    C#中,对象格式化的理解
    正则表达式
    .NET三年
    C#中,可重载的运算符
    c#中,const成员和readonly成员的区别
    c#中,struct和class的区别
    jQuery制作图片旋转效果
  • 原文地址:https://www.cnblogs.com/zhang-ping1205/p/13079648.html
Copyright © 2011-2022 走看看