面向对象(三)

目录:

  • isinstance和issubclass
  • 反射
    • getattr
    • hasattr
    • setattr
    • delattr
  • __str__和__repr__
  • __del__
  • item系列:
    • __getitem__
    • __delitem__
    • __setitem__
  • __new__(单例设计模式)
  • __call__
  • __len__
  • __hash__
  • __eq__

isinstance和issubclass

isinstance(obj, cls):返回True和False 判断obj是否属于cls这个类。

class A:
    a = 'dddd'
    def __init__(self, name, age):
        self.name = name
        self.age = age

class B(A):
    pass


a = B('我是a', 'none')
print(isinstance(a, B))
print(isinstance(a, A))
输出结果:
True
True

可以看到子类实例化的对象也是属于父类的

issubclass(sub, super)检查sub类是否是 super 类的派生类

class Foo(object):
    pass

class Bar(Foo):
    pass

issubclass(Bar, Foo)
输出结果为:
True

object是所有类的父类

反射

python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

四个可以实现自省的函数

class A:
    a = 'dddd'
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def tell(self):
        print('telling')

'判断是否有该属性'
print(hasattr(A, 'tell'))

a = A('我是a', 'none'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值