动态设计语言 - python

python在语言设计上比较灵活,属于动态语言。

之前不知道这动态语言的意思,感觉很新奇,就看了下python的文档。

该文9万字,论述了python的乾坤,balabala 很多。

其中 对象可以添加或删除 对象属性和方法 的操作就是 动态语言 的表现了。

这样 python 相对来说对类型的操作就比较方便了。

这篇博客中介绍了 通过 属性名 来获取 属性的 方法。

实例引用:

class Account(object):
    def __get__(self, instance, owner):
        print('作为别人小弟(类属性)被访问时,无条件经过我')
        return self

    def __getattribute__(self, item):
        print('访问属性时,无条件经过我')
        return object.__getattribute__(self, item)

    name = 'xiaomi'

    def __getattr__(self, item):
        print('我只负责捡漏')
        if item == 'product':
            return 'cellphone'


class User:
    name = 'Lucy'
    account = Account()


if __name__ == '__main__':
    u = User()
    p = u.account.product
    print(p)

## Output:
## 作为别人小弟(类属性)被访问时,无条件经过我(u.account触发)
## 访问属性时,无条件经过我(u.account.product触发)
## 我只负责捡漏(u.account.product触发)
## cellphone

这个实例比较形象,平时我们在访问不存在的实例的时候,就会被抛错,并且不友好的退出。

我们可以使用 __getattr__ 来做容错处理。

另外 我们还可以通过 __setattr__ 来添加或者赋值对应属性:

u.__setattr__('bb', 'ccc')

使用字典的方式来,查看所有属性及其值。

print(u.__dict__)

解锁了这个 python 技能,以后使用 python对象就更加灵活了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值