python的类定义中不免会用到私有属性,一般来说我们会使用setter()和getter()来设置和获取私有属性。如一下代码:
class book(object):
def __init__(self,name,price):
self._name = name
self._price = price
def get_name(self):
return self._name
def set_name(self,name):
self._name = name
def get_price(self):
return self._price
def set_price(self,price):
self._price = price
book1 = book('活着',30)
print(book1.get_name())
print(book1.get_price())
book1.set_price(60)
print(book1.get_name())
print(book1.get_price())
与C++相似,这种定义可以概括为两点:
1.确保属性私有,不可随意修改
2.提供可以获取和修改属性的方法getter()和setter()
但是在python中还可以使用property来进行另一种优雅的方式定义
class book(object):
def __init__(self,name,price):
self._name = name
self._price = price
@property
def name(self):
return self._name
@name.setter
def name(self,name):
self._name = name
@property
def price(self):
return self._price
@price.setter
def price(self,price):
self._price = price
book1 = book('活着',30)
print(book1.name)
print(book1.price)
book1.price = 60
print(book1.name)
print(book1.price)
使用@property装饰器修饰price方法,可以像使用属性一样去使用方法,而且省去了方法调用时的 "()"。