美文网首页
day16-对象作业

day16-对象作业

作者: RurouniKenshin | 来源:发表于2018-07-31 20:27 被阅读142次

1.声明一个电脑类:
属性:品牌、颜⾊色、内存大小
方法:打游戏、写代码、看视频
a.创建电脑类的对象,然后通过对象点的方式获取、修改、添加和删除它的属性
b.通过attr相关方法去获取、修改、添加和删除它的属性

# 声明一个电脑类
class Computer:
    def __init__(self,brand,color,memory_size):
        self.brand = brand
        self.color = color
        self.memory_size = memory_size

    def playgame(self):
        print('使用%s来打游戏'%(self.brand))

    def coding(self):
        print('使用%s来写代码'%(self.brand))

    def video(self):
        print('使用%s来看视频'%(self.brand))

if __name__ == '__main__':
    # 要求a
    computer1 = Computer('ASUS','black','8GB')
    # 获取电脑品牌
    print(computer1.brand)
    # 修改电脑颜色
    print(computer1.color)
    computer1.color = 'white'
    print(computer1.color)
    # 添加电脑操作系统
    computer1.system = '64位'
    print(computer1.system)
    # 删除内存大小
    del computer1.memory_size

    # 要求b
    # 获取电脑品牌
    print(computer1.__getattribute__('brand'))
    # 修改电脑颜色
    setattr(computer1,'color','red')
    print(computer1.color)
    # 添加电脑价格
    computer1.__setattr__('price',5800)
    print(computer1.price)
    # 删除电脑操作系统
    computer1.__delattr__('system')

#结果
ASUS
black
white
64位
ASUS
red
5800

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

# 声明狗类
class Dog:
    def __init__(self,name,color,age):
        self.name = name
        self.color = color
        self.age = age

    def bark(self):
        print('%s叫唤了起来'% self.name)
# 声明人类
class Person:
    def __init__(self,name,age,dog = None):
        self.name = name
        self.age = age
        self.dog = dog

    def walk_dog(self):
        print('%s在遛狗'% self.name)

if __name__ == '__main__':
    # 声明狗大黄
    dog = Dog('大黄','yellow',8)
    # 声明小明
    person = Person('小明',16)
    # 让小明拥有大黄
    person.__setattr__('dog',dog)
    # 小明遛狗
    person.walk_dog()

#结果
小明在遛狗

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

# 声明矩形类
class Rect:
    def __init__(self,width,heigth):
        self.width = width
        self.heigth = heigth
    # 计算周长
    def girth(self):
        print('周长为:'+str((self.width+self.heigth)*2))
        return (self.width+self.heigth)*2
    # 计算面积
    def area(self):
        print('面积为:'+str(self.width*self.heigth))
        return self.width*self.heigth

if __name__ == '__main__':
    # 创建3个不同的矩形
    rect1 = Rect(3,4)
    rect2 = Rect(5,6)
    rect3 = Rect(7,8)
    print('rect1:')
    rect1.girth()
    rect1.area()
    print('rect2:')
    rect2.girth()
    rect2.area()
    print('rect3:')
    rect3.girth()
    rect3.area()
#结果
rect1:
周长为:14
面积为:12
rect2:
周长为:22
面积为:30
rect3:
周长为:30
面积为:56

4.创建一个学生类:
属性:姓名,年龄,学号 方法:答到,展示学生信息
创建一个班级类:
属性:学生,班级名 方法:添加学生,删除学生,点名

# 声明学生类
class Student:
    def __init__(self,name,age,stu_id):
        self.name = name
        self.age = age
        self.stu_id = stu_id
    # 答到
    def answer(self):
        print('%s 到!' % self.name)
        return True
    # 展示信息
    def info(self):
        print('姓名:%s 年龄:%d 学号:%s'% (self.name,self.age,self.stu_id))
# 声明班级类
class Class:
    def __init__(self,class_name,students=[]):
        self.class_name = class_name
        self.students = students
    # 添加学生
    def add_stu(self):
        name = input('name:')
        age = input('age:')
        stu_id = input('stu_id:')
        stu = Student(name,age,stu_id)
        self.students.append(stu)
    # 删除学生
    def del_stu(self):
        stu_id = input('stu_id:')
        for x in self.students:
            if x.stu_id == stu_id:
                self.students.remove(x)
    # 点名
    @staticmethod
    def coll_over():
        name = input('name:')
        print('%s 到了吗?' % name)

if __name__ == '__main__':
    pass

5.写一个类,封装所有和数学运算相关的功能(包含常用功能和常用值,例如:pi,e等)

import math
# 封装一小部分数学函数
class MathOperation:
    PI = math.pi
    E = math.e

    @classmethod
    def circle_area(cls,r):
        print('该圆的面积是:%.2f' % (cls.PI*r**2))

    @classmethod
    def circle_girth(cls,r):
        print('该圆的周长是:%.2f' % (cls.PI*2*r))

    @staticmethod
    def m_sqrt(number):
        print('该数开平方根结果为:%.2f' % math.sqrt(number))

    @staticmethod
    def number_abs(number):
        print('该数的绝对值是:%.2f' % math.fabs(number))

if __name__ == '__main__':
    # 对象测试
    MathOperation.circle_area(4)
    MathOperation.circle_girth(4)
    MathOperation.m_sqrt(4)
    MathOperation.number_abs(-3.8)
#结果
该圆的面积是:50.27
该圆的周长是:25.13
该数开平方根结果为:2.00
该数的绝对值是:3.80

6.写一个班级类,属性:班级名、学生;
功能:添加学生、删除学生、根据姓名查看学生信息,展示班级的所有学生信息

# 声明学生类
class Student:
    __slots__ = ('name','age','stu_id','tel','scores')
    def __init__(self,name,age,stu_id,tel):
        self.name = name
        self.age = age
        self.stu_id = stu_id
        self.tel = tel
# 声明班级类
class Class:
    __slots__ = ('class_name', 'students', 'class_money')
    def __init__(self,class_name,students=[]):
        self.class_name = class_name
        self.students = students
    # 添加学生
    def add_stu(self):
        name = input('name:')
        age = int(input('age:'))
        stu_id = input('stu_id:')
        tel = input('tel:')
        stu = Student(name,age,stu_id,tel)
        self.students.append(stu)
    # 删除学生
    def del_stu(self):
        stu_id = input('stu_id:')
        for x in self.students:
            if x.stu_id == stu_id:
                self.students.remove(x)
    # 根据姓名查看学生
    def lookup_stu(self):
        name = input('input syudent\'s name:')
        for x in self.students:
            if x.name == name:
                print('姓名:%s 年龄:%d 学号:%s 电话:%s' %
                      (x.name, x.age, x.stu_id, x.tel))
    # 展示班级的所有学生
    def all_info(self):
        for x in self.students:
            print('姓名:%s 年龄:%d 学号:%s 电话:%s' %
                  (x.name, x.age, x.stu_id, x.tel))

if __name__ == '__main__':
    c1 = Class('python1',[])
    while True:
        c1.add_stu()
        order = input('contiue?y/n >>>')
        if order == 'n':
            break
    c1.all_info()
#结果
name:ww
age:25
stu_id:1
tel:12345678
contiue?y/n >>>y
name:ee
age:26
stu_id:2
tel:12345678
contiue?y/n >>>y
name:rr
age:27
stu_id:3
tel:12345678
contiue?y/n >>>n
姓名:ww 年龄:25 学号:1 电话:12345678
姓名:ee 年龄:26 学号:2 电话:12345678
姓名:rr 年龄:27 学号:3 电话:12345678

相关文章

  • day16-对象作业

    1.声明一个电脑类:属性:品牌、颜⾊色、内存大小方法:打游戏、写代码、看视频a.创建电脑类的对象,然后通过对象点的...

  • Day16-作业

    0.定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法:a. 获取学生的姓名...

  • day16-作业

    定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法:a. 获取学生的姓名:g...

  • day16-类和对象

    一、类的继承 1.基本概念 父类(超类):被继承的类 子类:去继承父类的类 继承定义:让子类直接拥有父类的属性和方...

  • Day16打造千面英雄之旅

    DAY16 学习课程:《Day16-西方经典作品鉴赏,打造千面英雄之旅,击穿用户心智》 今日作业:复盘你自己的英...

  • Day16-《让文章阅读量轻松翻倍的实用技巧》——三班1组05-

    【3班1组】+Day16-《让文章阅读量轻松翻倍的实用技巧》 【三班1组05-天造蠢才】 【作业内容】句子改写,将...

  • 2019-01-14

    Day16-面向对象2 一、 私有化 1、 属性和方法的访问权限 私有的:在类的外部不可以使用,也不可以继承保护的...

  • Day16-面向对象和pygame

    02-类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类子类:去继承父类...

  • Day16-面向对象和pygame

    一、类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类 子类:去继承父类...

  • day16-面向对象和pygame

    1.类的继承 代码示例 运行结果 2.重写 代码示例 运行结果 3.添加属性 代码示例 运行结果 练习 代码如下 ...

网友评论

      本文标题:day16-对象作业

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