• 400-650-7353

    精品课程

    您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】类中的属性装饰器和综合案例

    【Python基础知识】类中的属性装饰器和综合案例

    • 发布: python培训
    • 来源:python干货资料
    • 2021-03-22 16:16:42
    • 阅读()
    • 分享
    • 手机端入口

    1、类中的属性装饰器

    属性装饰器是实现将方法转换成属性的装饰器,便于操作属性,实现属性的更改、查看。其语法格式如下:

    class 类名():

    def __init__(self):

    self.__变量名 = 值

    @property

    def 方法名(self):

    return self.__变量名

    @方法名.setter

    def 方法名(self, 新值):

    self.__变量名 = 新值

    下面是一个使用属性装饰器的示例:

    1. >>> class Car(object): 
    2. ...     def __init__(self, brand, color): 
    3. ...         self.brand = brand 
    4. ...         self.color = color 
    5. ...         self.__gaso = 20 
    6. ...     @property 
    7. ...     def gaso(self): 
    8. ...         return self.__gaso 
    9. ...     @gaso.setter 
    10. ...     def gaso(self, m): 
    11. ...         self.__gaso += m 
    12. ... 
    13. >>> falali = Car('法拉利''白色'
    14. >>> falali.gaso = 80    # 进行加油 
    15. >>> print(falali.gaso)  # 打印油量 
    16. 100 

    上述程序中,首先在__init__()方法中初始化了一个类私有属性self.__gaso,并赋值20;然后定义属性装饰器@property,后接的gaso()方法获得油量;接着用@gaso.setter,给self.__gaso重新赋新值,由于加油是需要保留原先油量的,因此采用了“+=”运算符进行赋值。当使用Car类创建实例falali后,初始化油量是20,然后给属性装饰器赋值80,则最后打印油量是20+80=100。

    【Python基础知识】类中的属性装饰器和综合案例

    2、类的综合案例

    创建一个学生类(Student),类中含有类属性城市(city),默认为北京。初始化方法中含有属性名字、年龄和金钱,其中金钱为私有属性,默认值为0。学生实例的城市属性与类属性相同。代码如下:

    1. class Student: 
    2.     city = '北京' 
    3.     def __init__(self, init_name, init_age, init_money = 0): 
    4.         self.name = init_name 
    5.         self.age = init_age 
    6.         self.__money = init_money 
    7.         self.city = Student.city 

    学生类中包含以下方法。

    ①实例方法:创建实例money属性的get和set方法。

    ②私有方法:创建__study()方法,打印某某在认真听课。

    ③实例方法:创建on_grade()方法,调用上面的私有方法__study()。

    ④魔法方法:创建一个__str__()打印方法,打印学生的名字。

    ⑤静态方法:创建class_discipline()方法,打印课堂纪律。

    ⑥类方法:创建set_city()方法,设置城市属性;创建show_city()方法,打印城市属性。

    在学生类中添加以上方法,代码如下:

    1. def get_money(self):  
    2.       print('%s有%d RMB' % (self.name, self.__money))     
    3.   def set_money(self, m):   
    4.       self.__money += m 
    5.   def __study(self): 
    6.       print('%s在认真听课' % self.name) 
    7.   def on_grade(self):   
    8.       self.__study()     
    9.   def __str__(self):   
    10.       return self.name 
    11.   @staticmethod 
    12.   def class_discipline(): 
    13.       print('1.上课认真听讲! \n'
    14.                '2.不准迟到早退! \n'
    15.                '3.不准交头接耳! \n'
    16.   @classmethod 
    17.   def set_city(cls, city): 
    18.       cls.city = city 
    19.   @classmethod 
    20.   def show_city(cls): 
    21.       print('%s人' % (cls.city)) 

    创建了学生类之后,在 Python 程序入口if __name__ == '__main__'中(每个Python模块都包含内建变量__name__,它的默认值为'__main__'),进行类实例化和实例属性设置和实例方法调用。首先打印课堂纪律;然后创建一个学生实例liu,构造函数的参数为:刘永,18岁,金钱设置为10000,查看金钱余额,调用听课方法,打印城市;最后创建一个学生实例wu,构造函数的参数为:吴敏,16岁,金钱设置为9000,查看金钱余额,调用听课方法,修改城市属性并打印。代码如下:

    1. if __name__ == '__main__'
    2.     Student.class_discipline() 
    3.     liu = Student('刘永'18
    4.     liu.set_money(10000
    5.     liu.get_money() 
    6.     liu.on_grade() 
    7.     Student.show_city() 
    8.     wu = Student('吴敏'16
    9.     wu.set_money(9000
    10.     wu.get_money() 
    11.     wu.on_grade() 
    12.     Student.set_city('上海'
    13.     Student.show_city() 

    建议将这个程序使用脚本模式运行,运行结果:

    1. 1.上课认真听讲!  
    2. 2.不准迟到早退!  
    3. 3.不准交头接耳!  
    4.  
    5. 刘永有10000 RMB 
    6. 刘永在认真听课 
    7. 北京人 
    8. 吴敏有9000 RMB 
    9. 吴敏在认真听课 
    10. 上海人 

     

    课程好礼申请领取
    您的姓名
    您的电话
    意向课程
     

    中公优就业

    官方QQ

    扫描上方二维码或点击一键加群,免费领取价值599元网课,加群暗号:599。 一键加群

    >>本文地址:
    注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

    推荐阅读

    优就业:ujiuye

    关注中公优就业官方微信

    • 关注微信回复关键词“大礼包”,领80G学习资料
    QQ交流群
    领取免费网课
    (加群备注“网站”)
    IT培训交流群 加入群聊 +
    软件测试 加入群聊 +
    全链路UI/UE设计 加入群聊 +
    Python+人工智能 加入群聊 +
    互联网营销 加入群聊 +
    Java开发 加入群聊 +
    PHP开发 加入群聊 +
    VR/AR游戏开发 加入群聊 +
    大前端 加入群聊 +
    大数据 加入群聊 +
    Linux云计算 加入群聊 +
    优就业官方微信
    扫码回复关键词“大礼包”
    领取80G学习资料

    测一测
    你适合学哪门IT技术?

    1 您的年龄

    2 您的学历

    3 您更想做哪个方向的工作?

    获取测试结果
     
    课程资料、活动优惠 领取通道
     
     
    韩国毛茸茸的丰满妇女,亚洲国内自拍愉拍,高清性色生活片97,亚洲日本成本人观看 网站地图