Python之property的使用

属性property

1. 私有属性添加getter和setter方法

class Money(object):
    def __init__(self):
        self.__money=100

    def setMoney(self,value):
        if isinstance(value,int):
            self.__money=value
        else:
            print('error:不是整型数字')

    def getMoney(self):
        return self.__money

2. 使用property升级getter和setter方法 

class Money(object):
    def __init__(self):
        self.__money=100

    def setMoney(self,value):
        if isinstance(value,int):
            self.__money=value
        else:
            print('error:不是整型数字')

    def getMoney(self):
        return self.__money

    num=property(getMoney,setMoney)

a=Money()
print(a.getMoney())
a.num=10
print(a.num)
print(a.getMoney())

结果:

D:\Anaconda\python.exe E:/pythonwork/黑马/私有化.py
100
10
10

Process finished with exit code 0

Python之property的使用 

Python之property的使用 

3. 使用property取代getter和setter方法 

@property 成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用:

1.将方法转换为只读

2.重新实现⼀个属性的设置和读取方法,可做边界判定

class Money(object):
    def __init__(self):
        self.__money=100
    @property
    def Money(self):
        return self.__money
    @Money.setter
    def Money(self,value):
        if isinstance(value,int):
            self.__money=value
        else:
            print('error:不是整型数字')

a=Money()
a.num=10
print(a.num)

 

D:\Anaconda\python.exe E:/pythonwork/黑马/私有化.py
10

Process finished with exit code 0

Python之property的使用