IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
1、類中的屬性裝飾器
屬性裝飾器是實現(xiàn)將方法轉(zhuǎn)換成屬性的裝飾器,便于操作屬性,實現(xiàn)屬性的更改、查看。其語法格式如下:
class 類名():
def __init__(self):
self.__變量名 = 值
@property
def 方法名(self):
return self.__變量名
@方法名.setter
def 方法名(self, 新值):
self.__變量名 = 新值
下面是一個使用屬性裝飾器的示例:
- >>> class Car(object):
- ... def __init__(self, brand, color):
- ... self.brand = brand
- ... self.color = color
- ... self.__gaso = 20
- ... @property
- ... def gaso(self):
- ... return self.__gaso
- ... @gaso.setter
- ... def gaso(self, m):
- ... self.__gaso += m
- ...
- >>> falali = Car('法拉利', '白色')
- >>> falali.gaso = 80 # 進行加油
- >>> print(falali.gaso) # 打印油量
- 100
上述程序中,首先在__init__()方法中初始化了一個類私有屬性self.__gaso,并賦值20;然后定義屬性裝飾器@property,后接的gaso()方法獲得油量;接著用@gaso.setter,給self.__gaso重新賦新值,由于加油是需要保留原先油量的,因此采用了“+=”運算符進行賦值。當(dāng)使用Car類創(chuàng)建實例falali后,初始化油量是20,然后給屬性裝飾器賦值80,則最后打印油量是20+80=100。
2、類的綜合案例
創(chuàng)建一個學(xué)生類(Student),類中含有類屬性城市(city),默認為北京。初始化方法中含有屬性名字、年齡和金錢,其中金錢為私有屬性,默認值為0。學(xué)生實例的城市屬性與類屬性相同。代碼如下:
- class Student:
- city = '北京'
- def __init__(self, init_name, init_age, init_money = 0):
- self.name = init_name
- self.age = init_age
- self.__money = init_money
- self.city = Student.city
學(xué)生類中包含以下方法。
①實例方法:創(chuàng)建實例money屬性的get和set方法。
②私有方法:創(chuàng)建__study()方法,打印某某在認真聽課。
③實例方法:創(chuàng)建on_grade()方法,調(diào)用上面的私有方法__study()。
④魔法方法:創(chuàng)建一個__str__()打印方法,打印學(xué)生的名字。
⑤靜態(tài)方法:創(chuàng)建class_discipline()方法,打印課堂紀律。
⑥類方法:創(chuàng)建set_city()方法,設(shè)置城市屬性;創(chuàng)建show_city()方法,打印城市屬性。
在學(xué)生類中添加以上方法,代碼如下:
- def get_money(self):
- print('%s有%d RMB' % (self.name, self.__money))
- def set_money(self, m):
- self.__money += m
- def __study(self):
- print('%s在認真聽課' % self.name)
- def on_grade(self):
- self.__study()
- def __str__(self):
- return self.name
- @staticmethod
- def class_discipline():
- print('1.上課認真聽講! \n'+
- '2.不準(zhǔn)遲到早退! \n'+
- '3.不準(zhǔn)交頭接耳! \n')
- @classmethod
- def set_city(cls, city):
- cls.city = city
- @classmethod
- def show_city(cls):
- print('%s人' % (cls.city))
創(chuàng)建了學(xué)生類之后,在 Python 程序入口if __name__ == '__main__'中(每個Python模塊都包含內(nèi)建變量__name__,它的默認值為'__main__'),進行類實例化和實例屬性設(shè)置和實例方法調(diào)用。首先打印課堂紀律;然后創(chuàng)建一個學(xué)生實例liu,構(gòu)造函數(shù)的參數(shù)為:劉永,18歲,金錢設(shè)置為10000,查看金錢余額,調(diào)用聽課方法,打印城市;最后創(chuàng)建一個學(xué)生實例wu,構(gòu)造函數(shù)的參數(shù)為:吳敏,16歲,金錢設(shè)置為9000,查看金錢余額,調(diào)用聽課方法,修改城市屬性并打印。代碼如下:
- if __name__ == '__main__':
- Student.class_discipline()
- liu = Student('劉永', 18)
- liu.set_money(10000)
- liu.get_money()
- liu.on_grade()
- Student.show_city()
- wu = Student('吳敏', 16)
- wu.set_money(9000)
- wu.get_money()
- wu.on_grade()
- Student.set_city('上海')
- Student.show_city()
建議將這個程序使用腳本模式運行,運行結(jié)果:
- 1.上課認真聽講!
- 2.不準(zhǔn)遲到早退!
- 3.不準(zhǔn)交頭接耳!
- 劉永有10000 RMB
- 劉永在認真聽課
- 北京人
- 吳敏有9000 RMB
- 吳敏在認真聽課
- 上海人
>>本文地址:http://liujunjsxg.cn/zhuanye/2021/68020.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?