Day-15 Homework

1. 建立一個(gè)汽車類Auto,包括輪胎個(gè)數(shù),汽車顏色,車身重量,速度等屬性,并通過(guò)不同的構(gòu)造方法創(chuàng)建實(shí)例。至少要求汽車能夠加速減速停車。 再定義一個(gè)小汽車類CarAuto繼承Auto并添加空調(diào)、CD屬性,并且重新實(shí)現(xiàn)方法覆蓋加速、減速的方法

class ReadError(Exception):
    """聲明只讀錯(cuò)誤"""
    def __str__(self):
        return '該值不能賦值'


class Auto:
    """車"""
    def __init__(self, color, weight: float, tyre_nums=4):
        self._color = color
        self._weight = weight
        self._tyre_nums = tyre_nums
        self.speed = 0

    def accelerate(self):
        """加速"""
        self.speed += 10

    def slow_down(self):
        """減速"""
        while True:
            if self.speed - 10 >= 0:
                self.speed -= 10
                break
            else:
                self.speed = 0

    def stop(self):
        """停車"""
        while True:
            if self.speed != 0:
                self.slow_down()

    @property
    def color(self):
        """為保證該屬性不可修改"""
        return self._color

    @color.setter
    def color(self, value):
        """保證該屬性不可修改"""
        raise ReadError

    @property
    def weight(self):
        """為保證該屬性不可修改"""
        return self._weight

    @weight.setter
    def weight(self, value):
        """保證該屬性不可修改"""
        raise ReadError

    @property
    def tyre_nums(self):
        """為保證該屬性不可修改"""
        return self._tyre_nums

    @tyre_nums.setter
    def tyre_nums(self, value):
        """保證該屬性不可修改"""
        raise ReadError


class CarAuto(Auto):
    """轎車"""
    def __init__(self, color, weight, good_air=0, cd=0, speed=0):
        super().__init__(color, weight, speed)
        self._good_air = good_air
        self._cd = cd

    @property
    def good_air(self):
        """改變屬性對(duì)應(yīng)值的意義"""
        if self._good_air == 1:
            return '有'
        else:
            return '無(wú)'

    @property
    def cd(self):
        """改變屬性對(duì)應(yīng)值的意義"""
        if self._cd == 1:
            return '有'
        else:
            return '無(wú)'

2. 創(chuàng)建一個(gè)Person類,添加一個(gè)類字段用來(lái)統(tǒng)計(jì)Perosn類的對(duì)象的個(gè)數(shù)

class Person:
    """人類"""
    person_num = 0  # 人口數(shù)量

    def __init__(self, name, gender, age=0, ):
        """生一個(gè)人"""
        self.name = name
        self.gender = gender
        self.age = age
        Person.person_num += 1  # 增加一個(gè)人口數(shù)量

    def die(self):
        """死一個(gè)人"""
        del self
        Person.person_num -= 1  # 減少一個(gè)人口數(shù)量

3.創(chuàng)建一個(gè)動(dòng)物類,擁有屬性:性別、年齡、顏色、類型 , 要求打印這個(gè)類的對(duì)象的時(shí)候以'/XXX的對(duì)象: 性別-? 年齡-? 顏色-? 類型-?/'的形式來(lái)打印

class Animal:
    """動(dòng)物"""
    def __init__(self, gender, color, a_type, age=0):
        self.gender = gender
        self.color = color
        self.type = a_type
        self.age = age

    def __repr__(self):
        return '/%s的對(duì)象:性別-%s 年齡-%d 顏色-%s 類型-%s/' % (self.__class__.__name__, self.gender, self.age, self.color, self.type)

4. 寫一個(gè)圓類, 擁有屬性半徑、面積和周長(zhǎng);要求獲取面積和周長(zhǎng)的時(shí)候的時(shí)候可以根據(jù)半徑的值把對(duì)應(yīng)的值取到。但是給面積和周長(zhǎng)賦值的時(shí)候,程序直接崩潰,并且提示改屬性不能賦值

class ReadError(Exception):
    """聲明只讀錯(cuò)誤"""
    def __str__(self):
        return '該值不能賦值'


class Circular:
    """圓"""
    pi = 3.14

    def __init__(self, radius: int):
        self.radius = radius
        self._area = 0
        self._perimeter = 0

    @property
    def area(self):
        """得面積的值"""
        return Circular.pi * self.radius * self.radius

    @property
    def perimeter(self):
        """得周長(zhǎng)的值"""
        return 2 * Circular.pi * self.radius

    @area.setter
    def area(self, value):
        """面積不可變"""
        raise ReadError

    @perimeter.setter
    def perimeter(self, value):
        """周長(zhǎng)不可變"""
        raise ReadError
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容