1、创建类
#-*- coding: utf-8 -*-
#OO 抽象、封装、继承、多态
#创建类
class Person:
def setName(self,name):#self 代表对象自身
self.name=name
def getName(self):
return self.name
def greet(self):
print "hi,%s"%self.name
2、初始化类调用类方法
foo=Person()
foo.setName('Max')
print foo.getName() #Max
foo.greet() #hi,Max
3、类的私有、公有方法
#类的私有方法
class Secret:
def _private(self): #_表示私有
print "cant"
def public(self):
print "cat"
o=Secret() #如果在其他类中调用这个类?
o.public()
o._private()
4、类的继承
#超类
class Filter:
def init(self):
self.blocked=[]
class SPAMFilter(Filter): #SPAMFilter继承于Filter
def init(self): #重写init方法
self.blocked=['SPAM']
f=Filter()
print f.init()
s=SPAMFilter()
print s.init()
#判断两个类之间是否存在继承关系
print issubclass(SPAMFilter,Filter)
5、多重继承
#多重继承
class Calculator:
def calculate(self,expression):
self.value=eval(expression)
class Talker:
def talk(self):
print 'hi,value is',self.value
#子类,同事继承两个父类
class TalkingCalculator(Calculator,Talker):
pass
#调用
tc=TalkingCalculator()
tc.calculate('1+1')
tc.talk() #hi,value is 2
#注意如果Talker、Calculator两个超类中都有一个talk方法时,继承时要注意
#先继承的类方法会重写后继承的方法。
# class TalkingCalculator(Talker,Calculator):
# pass
#如果是这个顺序,则Talker中的talk方法可用,而Calculator不可用
#判断类中方法是否存在
print hasattr(tc,'talk') #True
#判断类中方法是否可调用
print callable(getattr(tc,'talk',None)) #True