400-650-7353

精品课程

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

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

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。 一键加群

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

推荐阅读

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

1 您的年龄

2 您的学历

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

获取测试结果
 
课程资料、活动优惠 领取通道
 
 
网站地图 五星彩票网注册 500w彩票注册 快乐彩票网官方网
申博游戏端 申博登陆网址 申博游戏娱乐 申博sunbet官网138
乐点彩票湖北快3 金砖娱乐重庆时时彩登入 沙龙娱乐现金直营网 吉祥博娱乐注册登录
58彩票安卓版 cc彩票平台登录 500w彩票网客户端下载 58彩票网开户
快乐彩票网注册 500w彩票网官方网 快乐十分摇奖机 58彩票网开户
191sj.com 66sbmsc.com 1112997.COM 599BBIN.COM 8AQS.COM
2222ib.com 986tt.com 55sbmsc.com 717sj.com 658PT.COM
701SUN.COM 1112898.COM 589sj.com 600xsb.com 66sbsg.com
238PT.COM 187PT.COM 134sun.com 986ib.com 66sbsun.com