'''
訪問(wèn)私有屬性
判斷是否是該類型:isinstance(10,str)
'''
class Money(object):
def __init__(self):
self.__money = 0
def getMoney(self):
return self.__money
def setMoney(self, value):
#判斷value的值是不是整型
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
m1 = Money()
print(m1.getMoney())
m1.setMoney(100)
print(m1.getMoney())
m1.setMoney('i')
結(jié)果如下:

訪問(wèn)私有屬性結(jié)果.jpg
私有的屬性,為了對(duì)外能訪問(wèn),提供了對(duì)外訪問(wèn)的set和get方法。但是對(duì)于使用的時(shí)候略顯繁瑣,使用ret = property(get,set)
當(dāng)對(duì)象獲取ret時(shí),相當(dāng)于調(diào)用get方法,當(dāng)對(duì)象設(shè)置ret時(shí),相當(dāng)于調(diào)用set,將設(shè)置的值傳給set的方法作為實(shí)參。
class Money(object):
def __init__(self):
self.__money = 0
def getMoney(self):
return self.__money
def setMoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
money = property(getMoney, setMoney)
m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)
結(jié)果如下:

property結(jié)果1.jpg
property第二種表示方法:
class Money(object):
def __init__(self):
self.__money = 0
@property
def money(self):
return self.__money
@money.setter
def money(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)
結(jié)果如下:

property結(jié)果2.jpg
@property成為屬性函數(shù),可以對(duì)屬性賦值時(shí)做必要的檢查,并保證代碼的清晰短小,主要有2個(gè)作用
1、將方法轉(zhuǎn)換為只讀
2、重新實(shí)現(xiàn)一個(gè)屬性的設(shè)置和讀取方法,可做邊界判定