美文网首页
12-面向对象 homework

12-面向对象 homework

作者: 微醉那一抹殷红 | 来源:发表于2018-07-31 20:15 被阅读0次

    1.声明一个电脑类:

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

    """ 易竹小居士 """
    
    """
    1.声明一个电脑类:  
    属性:品牌、颜色、内存大小  
    方法:打游戏、写代码、看视频  
    
    a.创建电脑类的对象,然后通过对象点的方式获取、修改、添加和删除它的属性  
    b.通过attr相关方法去获取、修改、添加和删除它的属性   
    
    """
    
    class Computer:
        """声明一个电脑类"""
        def __init__(self, brand='', color='black', ram=0):
            self.brand = brand
            self.color = color
            self.ram = ram
    
        def play_game(self):
            print('打游戏')
    
        def write_code(self):
            print('写代码')
    
        def watch_tv(self):
            print('看电视')
    
    
    
    
    if __name__ == '__main__':
        cp1 = Computer('lenovo', 'yellow', 4)
        """创建一个电脑对象"""
        print(cp1)
    
        # 获取
        print(cp1.color)
        print(cp1.brand)
        print(cp1.ram)
    
        # 修改
        cp1.color = 'red'
        print(cp1.color)
    
        cp1.brand = 'mac'
        print(cp1.brand)
    
        cp1.ram = 2
        print(cp1.ram)
    
    
        # 添加
        cp1.listen = 'music'
        print(cp1.listen)
    
        # 删除
        del cp1.ram
        #print(cp1.ram)  # 在打印就报错:AttributeError: 'Computer' object has no attribute 'ram'
    
    
    
        # 通过attr获取
        print(cp1.__getattribute__('color'))
        print(getattr(cp1, 'brand', '电脑品牌'))
    
        # 通过attr增加
        cp1.__setattr__('outline', 'rectangle')
        print(cp1.outline)  #得到rectangle
        setattr(cp1, 'outline', 'rectangle')
        print(cp1.outline)
    
    
        #通过attr改
        setattr(cp1, 'color', 'pink')
        print(cp1.color)   #得到pink
    
        cp1.__setattr__('brand', 'hp')
        print(cp1.brand)   #得到hp
    
        #通过attr删除
        delattr(cp1, 'color')
        print(cp1.color)  #得到:AttributeError: 'Computer' object has no attribute 'color'
    
        cp1.__delattr__('color')
        print(cp1.color)   #得到:AttributeError: 'Computer' object has no attribute 'color'
    



    后补:

    """ 易竹小居士 """
    """
    1.声明一个电脑类:
    属性:品牌、颜色、内存大小
    方法:打游戏、写代码、看视频
    """
    class Computer:
        """电脑类"""
        def __init__(self, brand='', color='black', memory=0):
            self.brand = brand
            self.color = color
            self.memory = memory
    
        @staticmethod
        def play_game(game):
            print('打%s游戏' % game)
    
        @staticmethod
        def coding(code_type):
            print('写%s程序' % code_type)
    
        @staticmethod
        def watch_video(video):
            print('在看%s' % video)
    
    """
    2.声明一个人的类和狗的类:
    狗的属性:名字、颜色、年龄 狗的方法:叫唤
    人的属性:名字、年龄、狗 人的方法:遛狗
    a.创建人的对象小明,让他拥有一条狗大黄,然后让小明去遛大黄
    """
    class Dog:
        """狗类"""
        def __init__(self, name='', color='', age=0):
            self.name = name
            self.color = color
            self.age = age
    
        def shout(self):
            print('%s:汪汪汪!!' % self.name)
    
    
    class Person:
        """人类"""
        def __init__(self, name='', age=0):
            self.name = name
            self.age = age
            # None来表示对象的零值
            self.dog = None
    
        def walk_dog(self):
            """遛狗"""
            if self.dog == None:
                print('没🐶,遛自己吧!')
                return
    
            print('%s牵着%s在散步' % (self.name, self.dog.name))
    
    """
    3.声明一个矩形类:
    属性:长、宽 方法:计算周长和面积
    a.创建不同的矩形,并且打印其周长和面积
    """
    class Rectangle:
        """矩形类"""
        def __init__(self, length, width):
            self.length = length
            self.width = width
    
        def perimeter(self):
            """求周长"""
            return (self.length + self.width)*2
    
        def area(self):
            """求面积"""
            return self.length * self.width
    
    
    """
    4.创建一个学生类:
    属性:姓名,年龄,学号 方法:答到,展示学生信息 
    创建一个班级类:
    属性:学生,班级名 方法:添加学生,删除学生,点名
    """
    from random import randint
    
    class Student:
        """学生类"""
        def __init__(self, name='', age=0):
            self.name = name
            self.age = age
            self.study_id = 'py1805'+str(randint(0, 50))
    
        def answer(self):
            print('%s,到!' % self.name)
    
        def show(self):
            print('姓名:%s 年龄:%d 学号:%s' % (self.name, self.age, self.study_id))
    
    
    class Class:
        """班级类"""
        def __init__(self, name=''):
            self.name = name
            self.students = []
    
        def append_student(self, student=None):
            """添加学生"""
            self.students.append(student)
    
        def del_student(self, name):
            """删除学生"""
            for student in self.students[:]:
                if student.name == name:
                    self.students.remove(student)
    
        def call_names(self):
            """点名"""
            for student in self.students:
                # 点名
                print(student.name)
                # 答到
                student.answer()
    
    
    """
    5.写一个类,封装所有和数学运算相关的功能(包含常用功能和常用值,例如:pi,e等)
    """
    class Math:
        """数学类"""
        pi = 3.1415926
        e = 2.718
    
        @staticmethod
        def sum(*number):
            """求和"""
            sum1 = 0
            for x in number:
                sum1 += x
            return sum1
    
        @classmethod
        def cricle_area(cls, radius):
            """求圆的面积"""
            return radius**2*cls.pi
    
    
    
    if __name__ == '__main__':
        """第一题"""
        cm = Computer()
        cm.memory = 512
        cm.brand = '惠普'
        Computer.play_game('贪吃蛇')
        # 添加属性
        # cm.price = 998
        setattr(cm, 'price', 998)
        print(cm.price)
    
        # 删除属性
        # del cm.color
        cm.__delattr__('price')
    
        # 修改属性
        # cm.memory = 258
        cm.__setattr__('memory', 1024)
    
        """第二题"""
        p1 = Person('小明', 18)
        p1.dog = Dog('大黄', 'yellow', 3)
        p1.walk_dog()
    
        """第三题"""
        rect1 = Rectangle(10, 20)
        print(rect1.area(), rect1.perimeter())
    
        rect2 = Rectangle(100, 30)
        print(rect2.perimeter())
    
        """第四题"""
        stu1 = Student('张三', 20)
        stu2 = Student('aa', 18)
        stu3 = Student('bb', 30)
    
        class1 = Class('py1805')
        class1.append_student(stu1)
        class1.append_student(stu2)
        class1.append_student(stu3)
        class1.call_names()
    
    
        # 注意:如果函数的参数是对象(列表、字典、类的对象),传参的时候传的是地址,如果函数中需要对象的内容进行修改,
        #      传参的时候传对象的拷贝(如果是列表可以切片)
        def func1(list1):
            list1.append(10)
            print(list1)
    
        def func2(lista):
            lista.append(20)
            print(lista)
    
        list11 = [1, 2, 3, 4]
        func1(list11[:])
        func2(list11[:])
        print(list11)
    
        print(Math.sum(10, 2, 3))
        print(Math.cricle_area(3))
        print(Math.pi)
    

    相关文章

      网友评论

          本文标题:12-面向对象 homework

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