类与对象深度问题与解决技巧(4 如何创建可管理的对象属性)

在面向对象编程中,我们把方法看做对象的接口。直接访问对象的属性可能是不安全的,或设计上不够灵活,但是使用调用方法在形式上不如访问属性简洁,且但是如果属性声明和定义的过多的话,则在外部将要使用太多的访问器方法。.所以我们通过访问方法的形式直接访问对象的属性

1 通过直接用 property方法

class Demo(object):
    def __init__(self, name):
        self.name = name

    def set_name(self, name):
        # 检查数据类型
        if isinstance(name, str):
            self.name = name
        else:
            raise TypeError

    def get_name(self):
        return self.name

    # property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
    R = property(get_name, set_name)


d = Demo('Dog')
print(d.get_name())

d.set_name('cat')
print(d.get_name())

d.R = 'Duck'
print(d.R)
# Dog
# cat
# Duck

2 通过用装饰器

class Demo(object):
    def __init__(self, name):
        self.name = name

    @property
    def P(self):
        return self.name

    @P.setter
    def P(self, name):
        self.name = name


d = Demo('Dog')
print(d.P)
d.P = 'Cat'
print(d.P)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值