第七、八章抽象

callable   判断函数是否可调用

_metaclass_=type


class Person:
    def setName(self,name):
        self.name=name
    def getName(self):
        return self.name
foo=Person()
foo.setName('syt')
#print(foo.getName())


class Secret:
    def __inaccessible(self):
        print("can not see")
    def accessible(self):
        print('see')
        self.__inaccessible()
x=Secret()
#x.__inaccessible()
#x.accessible()
#x._Secret__inaccessible()


class MemberCounter:
    member=0
    def init(self):
        MemberCounter.member+=1


m1=MemberCounter()
m1.init()
m1.member=33
m2=MemberCounter()
m2.init()
#print(MemberCounter.member,m1.member,m2.member)


#指定超类
class Filter:
    def init(self):
        self.blocked=[]
    def filter(self,sequence):
        return [x for x in sequence if x not in self.blocked]
class SPAMFilter(Filter):
    def init(self):
        self.blocked=['SPAM']


f=Filter()
f.init()
#print(f.filter([1,2,3]))
s=SPAMFilter()
s.init()
#print(s.filter(['SPAM','ss','SPAM']))
#查看一个类是否是另一个的子类
print(issubclass(SPAMFilter,Filter))
#查看某个类的基类
print(SPAMFilter.__bases__)
#检查一个对象是否是一个类的实例
print(isinstance(s,SPAMFilter))
print(s.__class__)




#多个超类
class Calculator:
    def cal(self,expression):
        self.value=eval(expression)
class Talker:
    def talk(self):
        print('my value is ',self.value)
class TalkCal(Calculator,Talker):
    pass
tc=TalkCal()
tc.cal('1+2+3')
tc.talk()
#检查方法是否存在
print(hasattr(tc,'talk'))
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值