美文网首页
python私有属性

python私有属性

作者: 壁花烧年 | 来源:发表于2017-06-10 14:26 被阅读0次
'''
访问私有属性
判断是否是该类型: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:不是整型数字")

m1 = Money()
print(m1.getMoney())
m1.setMoney(100)
print(m1.getMoney())
m1.setMoney('i')

结果如下:


访问私有属性结果.jpg

私有的属性,为了对外能访问,提供了对外访问的set和get方法。但是对于使用的时候略显繁琐,使用ret = property(get,set)
当对象获取ret时,相当于调用get方法,当对象设置ret时,相当于调用set,将设置的值传给set的方法作为实参。

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:不是整型数字")
    money = property(getMoney, setMoney)

m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)

结果如下:

property结果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:不是整型数字")


m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)

结果如下:

property结果2.jpg

@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用
1、将方法转换为只读
2、重新实现一个属性的设置和读取方法,可做边界判定

相关文章

网友评论

      本文标题:python私有属性

      本文链接:https://www.haomeiwen.com/subject/zdwqqxtx.html