Python类的常用高级函数

__init__
# coding:utf-8

if __name__ == '__main__':

    '''
    定义:def __init__(self,参数1,参数2......):
        ......
    使用:在类实例化时触发  类名(参数1,参数2.......)
    '''

    class A(object):
        def __init__(self, name, sex):
            print(f'name is {name}, sex is {sex}')

    a = A('xie', 'man')  # name is xie, sex is man
__getattr__
# coding:utf-8

if __name__ == '__main__':

    '''
    定义: def __getattr(self,属性名)
    使用:在访问类不存在的或无权限的属性时触发 object.属性名
    '''

    class B(object):
        __name = 'rui'
        name = 'xie'

        def __getattr__(self, name):
            return f'name is {name}'

    b = B()
    print(b.name)  # xie
    print(b.__name)  # name is __name
    print(b.sex)  # name is sex
    print(b._B__name)  # rui
__setattr__
# coding:utf-8

if __name__ == '__main__':

    '''
    定义: def __setattr__(self,属性名,属性值)
    使用: 给类设置属性值时触发 object.属性名 = 属性值
    '''

    class C(object):
        name = ''
        __name = ''
        __sex = ''

        def __setattr__(self, key, value):
            print(f'I want set key:{key},value:{value}')

    c = C()
    c.name = 'xie'  # I want set key:name,value:xie
    c.age = '6666'  # I want set key:age,value:6666
    c.__sex = 'man'  # I want set key:__sex,value:man
__call__
# coding:utf-8

if __name__ == '__main__':

    '''
    定义: def __call__(self,参数1,参数2......)
    使用: 把类实例当做函数调用,通过object(参数1,参数2......)触发
    '''

    class D(object):
        def __call__(self, *args, **kwargs):
            print(f'args is {args},kwargs is {kwargs}')

    d = D()
    d(*(1, 2, 3), **{'name': 'xie'})  # args is (1, 2, 3),kwargs is {'name': 'xie'}
__str__
# coding:utf-8

if __name__ == '__main__':

    '''
    定义: def __str__(self)
    使用: 打印对象时触发 print(object)
    '''
    class F(object):
        def __str__(self):
            return '通常用来描述类'

    f = F()
    print(f)  # 通常用来描述类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值