Python学习笔记(七)——Python 类

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Daybreak1209/article/details/60573810

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



展开阅读全文

没有更多推荐了,返回首页