码迷,mamicode.com
首页 > 其他好文 > 详细

019: class, objects and instance: property

时间:2016-01-25 22:36:33      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

属性在本质上来讲是一组方法,但是调用的时候却如同字段,换句话说,其实就是对字段的一种封装,在设定和读取的时候,可以很轻易的添加逻辑,而其调用方式其不会改变

在Pyhon中可以用@property来定义:

class Book(object):
    def __init__(self, title, price):
        self._title = title
        self._price = price
    
    @property
    def price(self):
        return "${}".format(self._price)        

    @price.setter    
    def price(self, value):
        self._price = value    

    @price.deleter
    def price(self):
        del self._price    

book = Book("Python Basic", 100)

print(book.price)        

book.price = 200
print(book.price)    

del book.price
print(book.price)    
    

运行结果:

$100
$200
Traceback (most recent call last):
  File "C:\Users\Miles\python\class_object\20160125_1.py", line 26, in <module>
    print(book.price)
  File "C:\Users\Miles\python\class_object\20160125_1.py", line 8, in price
    return "${}".format(self._price)
AttributeError: Book object has no attribute _price

 

019: class, objects and instance: property

标签:

原文地址:http://www.cnblogs.com/jcsz/p/5158790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!