day 15 homework

1.建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求
汽车能够加速 减速 停车。
再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法
class Auto:
    auto_name = '法拉利'
    def __init__(self):
        self.tyre = '4'
        self.color = '红色'
        self.weight = '1000'
    def speed(self):
        # 对象方法
        return Auto.auto_name+'加速'

    # 类方法
    @classmethod
    def slow_down(cls):
        return cls.auto_name+'减速'

    # 静态方法
    @ staticmethod
    def park():
        return Auto.auto_name+'停车'


a1 = Auto()
print(a1.speed(),a1.slow_down(),a1.park())
print(a1.tyre)


class CarAuto(Auto):
    # 重新添加对象
    def __init__(self):
        super().__init__()
        self.cd = '大碗宽面'
        self.air = ''

    def speed(self):
        return '加速'

    @classmethod
    def slow_down(cls):
        return '减速'


c1 = CarAuto()
print(c1.slow_down(),c1.speed())
print(c1.cd,c1.air,c1.color)

2.创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
class Person:
    num = 0
    def __init__(self):
        Person.num += 1


p1 = Person()
p2 = Person()
p3 = Person()
p4 = Person()
p5 = Person()


print(Person.num)
3.创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
要求打印这个类的对象的时候以
'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/'
的形式来打印
class Animal:
    def __init__(self):
        self.gender = ''
        self.age = '1'
        self.color ='白色'
        self.type ='猴'
    def __str__(self):
        return '/%s的对象,性别-%s,年龄-%s,颜色-%s,类型-%s/'%(str(self.__class__.__name__),self.gender,self.age,self.color,self.type)

an1 = Animal()
print(an1.__str__())
4.写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。
但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
class Circle:
    def __init__(self,r):
        self._r = r
        self._area = 3.1415926*r**2
        self._per =2*3.1415926*r

    # r
    @property
    def r(self):
        return self._r
    @r.setter
    def r(self,value):
        self._r=value
        self._area = self._r**2*3.1415926
        self._per = self._r *2 * 3.1415926


    # area
    @property
    def area(self):
        return self._area
    @area.setter
    def area(self,value):
        raise ValueError


    # per
    @property
    def per(self):
        return self._per
    @per.setter
    def per(self,value):
        raise ValueError

c1 = Circle(20)
c1.r = 10
print(c1.area,c1.per)
c1.area = 10
print(c1.area)     #  ValueError

你可能感兴趣的:(day 15 homework)