Python类和继承

_metaclass_=type
#确定使用新式类

class Person:
    
    def setName(self,name):
        self.name=name
    def getName(self):
        return self.name
    def greet(self):
        print("Hello World!I'm %s."%self.name)
        
class Secretive:
    #从外部无法访问
    def __inaccessible(self):
        print("Bet you can't see me...")
    def accessible(self):
        print("The secret message is:")
        self.__inaccessible()
        
foo=Person()
bar=Person()

foo.setName('Luke Skywalker')
bar.setName('Anakin Skywalker')

foo.greet()
bar.greet()

s=Secretive()
s._Secretive__inaccessible()
s.accessible()

#python中类的定义其实就是执行代码块
#类的命名空间
class C:
    print('Class C being defined...')

class MemberCounter:
    #可供类所有成员or实例访问
    members=0
    def init(self):
        MemberCounter.members+=1
        
m1=MemberCounter()
m1.init()
print(MemberCounter.members)
m2=MemberCounter()
m2.init()
print(MemberCounter.members)


#Python类继承
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()
f.filter([1,2,3])

s=SPAMFilter()
s.init()
print(s.filter(['SPAM','SPAM','SPAM','Eggs','bacon','SPAM']))

#检查继承
print(issubclass(SPAMFilter,Filter))
print(issubclass(Filter,SPAMFilter))

#查找基类
#__bases__ s双下划线
print(SPAMFilter.__bases__)
print(Filter.__bases__)




#Muti-SuperClasses/Mutiple inheritance
#Python pass是空语句,是为了保持程序结构的完整性。
#超类的顺序:先继承的类中的方法会重写后继承的类中同名的方法
class Calculator:
    def calculate(self,expression):
        self.value=eval(expression)
    def talk(self):
        print('Hi,Cover the later superclass\'s talk function')

class Talker:
    def talk(self):
        print('Hi,my value is',self.value)

class TalkingCalculator(Calculator,Talker):
    pass

tc=TalkingCalculator()
tc.calculate('1+2*3')
tc.talk()




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值