python面向对象练习

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

class Computer:

    def __init__(self, brand, color, memory):
        self.brand = brand
        self.color = color
        self.memory = memory

    def play_game(self):
        print('打游戏')

    def coding(self):
        return '写代码'

    def watch_video(self):
        return '看视频'


computer1 = Computer('Apple', 'black', '8G')

# 方法1
# 获取属性
print(computer1.brand)
print(computer1.color)
print(computer1.memory)

# 修改属性
computer1.brand = 'new Apple'
computer1.color = 'new white'
computer1.memory = 'new 8G'

# 添加属性
computer1.price = '$1000'
print(computer1.price)

# 删除属性
del computer1.price
# print(computer1.price)  AttributeError: 'Computer' object has no attribute 'price'


# 方法2
# 获取属性
print(getattr(computer1, 'brand'))
print(getattr(computer1, 'color'))
print(getattr(computer1, 'memory'))

# 修改属性
setattr(computer1, 'brand', 'new new Apple')
print(computer1.brand)
setattr(computer1, 'color', 'new new white')
print(computer1.color)
setattr(computer1, 'memory', 'new new 8G')
print(computer1.memory)

# 添加属性
setattr(computer1, 'price', '$200')
print(computer1.price)

# 删除属性
delattr(computer1, 'price')
print(computer1.price)   # AttributeError: 'Computer' object has no attribute 'price'
        
        





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

class Dog:
    def __init__(self, name, color, age):
        self.name = name
        self.color = color
        self.age = age

    def method(self):
        print('汪汪汪')

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.dog = None

    def personMethod(self):
        if not self.dog:
            print('没狗')
        else:
            print('%s溜%s' % (self.name,self.dog.name))


bigHuang = Dog('大黄', '黄色', 2)

person1 = Person('小明', 18)
person1.dog  = bigHuang
person1.personMethod()

3.声明⼀一个圆类,自己确定有哪些属性和方法

import math


class Circle:
    pi = math.pi

    def __init__(self, radius):
        self.radius = radius


    def area(self):
        return '面积为%.2f' % (Circle.pi*self.radius**2)

    def  perimeter(self):
        return '周长为%.2f' % (2*Circle.pi*self.radius)


circle1 = Circle(3)

print(circle1.area())
print(circle1.perimeter())

4.创建⼀一个学⽣生类:
属性:姓名,年龄,学号
方法:答到,展示学⽣生信息

创建⼀一个班级类:
属性:学⽣生,班级名
方法:添加学⽣生,删除学生,点名, 求班上学生的平均年龄


class Students:
    def __init__(self, name='', age='', stu_id=''):
        self.name = name
        self.age = age
        self.stu_id = stu_id
    def answer(self):
        return "到"
    def show_info(self):
        return {"姓名":self.name, "年龄":self.age, "学号":self.stu_id}

stu1 = Students("小明","22","022")
print(stu1.answer())
print(stu1.show_info())


class ClassGrade:

    def __init__(self, stus=[], class_name=''):
        self.stus = stus
        self.class_name = class_name

    def add_stu(self, stu_name='', stu_age=0):
        stu = {}
        stu["姓名"]=stu_name
        stu["年龄"]=stu_age
        self.stus.append(stu)
        return self.stus

    def del_stu(self, stu_name):
        for stu in self.stus:
            if stu["姓名"]==stu_name:
                self.stus.remove(stu)
                break
    #
    def check_name(self, stu_name):
        return stu_name+'到'

    def aver_age(self):
        sum_age = 0
        for stu in self.stus:
            sum_age += stu["年龄"]
        return sum_age/len(self.stus)

    def show_info(self):
        return self.class_name, self.stus

class1 = ClassGrade(class_name="1903")
#添加学生
class1.add_stu("小红", 22)
class1.add_stu("小明", 23)
print(class1.show_info())
#删除学生
class1.del_stu("小明")
print("删除学生后的班级信息:", class1.show_info())
#点名
print(class1.check_name("小红"))
#求学生平均年龄
print("该班学生的平均年龄是", class1.aver_age())


你可能感兴趣的:(python面向对象练习)