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

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认识对象作业)