美文网首页
2018-10-17day14认识对象作业

2018-10-17day14认识对象作业

作者: MW演员 | 来源:发表于2018-10-17 20:59 被阅读0次

    1. 声明一个电脑类

    • 属性:品牌、颜色、内存大小

    • 方法:打游戏、写代码、看视频

    • a.创建电脑类的对象,然后通过对象点的方式获取、修改、添加和删除它的属性

    • b.通过attr相关方法去获取、修改、添加和删除它的属性

    声明类Computer类
    class Computer(object):
        """这是一个电脑类"""
    
        def __init__(self, brand, color, memory):
            self.brand = brand
            self.color = color
            self.memory = memory
    
        def play_game(self):
            print('正在打游戏')
    
        def programme(self):
            print('正在编写程序')
    
        def witch_move(self):
            print('正在看电视')
    
        def __str__(self):
            return str(self.__dict__)
    
    # 创建电脑对象
    comp1 = Computer('联想', '黑色', '4G')
    comp2 = Computer('华硕', '白色', '8G')
    # a. 获取属性值(对象.属性名)
    print(comp1.brand, comp1.color, comp1.memory)
    print(comp2.brand, comp2.color, comp2.memory)
    
    # 修改和添加对象属性
    comp1.brand = 'acer'
    comp2.memory = '16G'
    comp1.cpu_type = 'Inter'
    print(comp1.brand, comp1.color, comp1.memory, comp1.cpu_type)
    print(comp2.brand, comp2.color, comp2.memory)
    
    # 删除属性
    del comp1.color
    print(comp1.brand, comp1.memory, comp1.cpu_type)
    print(comp2.brand, comp2.color, comp2.memory)
    
    # b. 获取对象属性(attr的相关方法)
    # 获取对象属性值
    print(getattr(comp1, 'brand', '未知品牌'))
    print(getattr(comp1, 'brands', '未知品牌'))
    
    # 添加和修改对象属性值
    # 添加
    setattr(comp2, 'cpu_type', '酷睿')
    print(getattr(comp2, 'cpu_type', '未知'))
    # 修改
    setattr(comp1, 'brand', '战神')
    print(getattr(comp1, 'brand', '未找到'))
    
    # 删除属性
    print(comp1)
    print(comp2)
    delattr(comp2, 'cpu_type')
    print(comp2)
    

    2.声明一个人的类和狗的类:

    狗的属性:名字、颜色、年龄
    狗的叫法:叫唤
    人的属性:名字、 年龄、狗
    人的方法:遛狗
    a.创建人的对象名字叫小明,让他拥有一条狗 ,然后让小明去遛狗

    class Person(object):
        """人类"""
        def __init__(self, name, age, dog):
            self.name = name
            self.age = age
            self.dog = dog
    
        def walk_dog(self):
            print('%s 正在遛狗!' % self.name)
    
    
    class Dogs(object):
        """狗类"""
        def __init__(self, name, color, age):
            self.dog_name = name
            self.color = color
            self.dog_age = age
    
        def call(self):
            print('%s! %s! %s!' % (self.dog_name, self.dog_name, self.dog_name))
    
    dog1 = Dogs('大黄', '黄色', 2 )
    per1 = Person('小明', 18, dog1)
    
    per1.walk_dog()
    
    

    3.声明一个矩形类:

    属性: 长、宽
    方法:计算周长和面积
    a.创建不同的矩形,并且打印其周长和面积

    声明类
    class Rectangle(object):
        """矩形类"""
        def __init__(self, long = 0, wide = 0):
            self.long = long
            self.wide = wide
    
        @staticmethod
        def judge(long, wide):
            return long.isalnum() and wide.isalnum()
    
    
        def perimeter(self):
            print('周长:%.2f' % (2 * int(self.long) + 2 * int(self.wide)))
    
        def area(self):
            print('面积:%.2f' % (int(self.long) * int(self.wide)))
    
    # 创建对象
    
    rec1 = Rectangle(8, 12)
    rec1.perimeter()
    rec1.area()
    
    

    4.创建一个学生类:

    属性:姓名,年龄,学号,成绩
    方法:答到,展示学生信息
    创建一个班级类: 属性:学生,班级名
    方法:添加学生,删除学生,点名, 获取班级中所有学生的平均值, 获取班级中成绩最好的学生

    # 创建学生类
    """
        name: [students,stu2,stu3],
        name: [students,stu2,stu3],
    """
    class Student(object):
        """这是一个学生类"""
        def __init__(self, name, age, stu_id, score):
            self.name = name
            self.age = age
            self.stu_id = stu_id
            self.score = score
    
        def here(self):
            print('%s 到!'% self.name)
    
        def __str__(self):
            return '学号:' + self.stu_id + ' 姓名:' + self.name + ' 年龄:' \
                   + self.age + ' 成绩:' + self.score
    
    # 创建班级类
    #  方法:添加学生,删除学生,点名, 获取班级中所有学生的平均值, 获取班级中成绩最好的学生
    class Class(object):
        """这是一个班级类"""
        def __init__(self, class_name, student = []):
            self.class_name = class_name
            self.student = student
    
        def add_student(self):
            while True:
                num = input('请输入学生学号:')
                name = input('请输入学生姓名:')
                age = input('请输入学生年龄:')
                score = input('请输入学生成绩:')
                new_stu = Student(name, age, num, score)
                self.student.append(new_stu)
                # all_class.append(self)
                # all_class.append(new_class)
                print('添加成功!')
                print('1、继续\n2、退出')
                value = input('请输入选择:')
                if value == '1':
                    continue
                else:
                    break
    
        def del_student(self):
            name = input('请输入姓名:')
            index = 0
            for stu in self.student:
                if stu.name == name:
                    del self.student[index]
                index += 1
    
        def dianming(self):
            name = input('请输入姓名:')
            for stu in self.student:
                if stu.name == name:
                    print(stu)
                    stu.here()
    
        def show_info(self):
            for stu in self.student:
                print(stu)
    
    # 界面
    while True:
        print('1、创建对象')
        print('2、退   出')
        value = input('请选择:')
        if value == '1':
            class_name = input('请输入班级名:')
            new_class = Class(class_name)
            print('创建成功')
    
            while  True:
                print('1、添加学生\n2、删除学生\n3、点名\n4、获取所有信息\n5、返回上层')
                value = input('请选择:')
                if value == '5':
                    break
                elif value == '1':
                    new_class.add_student()
                    continue
                elif value == '2':
                    new_class.del_student()
                elif value == '3':
                    new_class.dianming()
                elif value == '4':
                    new_class.show_info()
        else:
            break
    
    

    相关文章

      网友评论

          本文标题:2018-10-17day14认识对象作业

          本文链接:https://www.haomeiwen.com/subject/nicdzftx.html