python新式类删改查

 1 class Goods(object):
 2 
 3     def __init__(self):
 4         # 原价
 5         self.original_price = 100
 6         # 折扣
 7         self.discount = 0.8
 8 
 9     @property
10     def price(self):
11         # 实际价格 = 原价 * 折扣
12         new_price = self.original_price * self.discount
13         return new_price
14 
15     @price.setter
16     def price(self, value):
17         self.original_price = value
18 
19     @price.deleter
20     def price(self):
21         del self.original_price
22 
23 obj = Goods()
24 print(obj.price)         # 获取商品价格
25 obj.price = 200   # 修改商品原价
26 del obj.price     # 删除商品原价

 

简单记下:

@property
@price.setter
@price.deleter

 

  • property:

property的构造方法中有个四个参数

第一个参数是方法名,调用 对象.属性 时自动触发执行方法
第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
第四个参数是字符串,调用 对象.属性.__doc__ ,此参数是该属性的描述信息

 1 class Foo:
 2     def get_bar(self):
 3         return 'abcdefd'
 4 
 5     # *必须两个参数
 6     def set_bar(self, value):
 7         return 'set value' + value
 8 
 9     def del_bar(self):
10         return 'abcdefd'
11 
12     BAR = property(get_bar, set_bar, del_bar, 'description...')
13 
14 obj = Foo()
15 
16 obj.BAR              # 自动调用第一个参数中定义的方法:get_bar
17 obj.BAR = "egon"     # 自动调用第二个参数中定义的方法:set_bar方法,并将“alex”当作参数传入
18 del obj.BAR          # 自动调用第三个参数中定义的方法:del_bar方法
19 print(obj.BAR.__doc__ )     # 自动获取第四个参数中设置的值:description...
20 print(obj.BAR)

print(obj.BAR.__doc__ )实际上并没有打印'description...'



posted @ 2017-11-15 11:15  大川哥  阅读(178)  评论(0编辑  收藏  举报