首页 > 代码库 > Python面向对象编程
Python面向对象编程
1.面向过程编程
以函数为单元,一组函数的顺序执行
#面向过程lang1={‘name‘:‘C++‘,‘score‘:‘9.0‘}lang2={‘name‘:‘Python‘,‘score‘:‘8.5‘}def langinfo(lang): print ‘%s:%s‘%(lang["name"],lang["score"])langinfo(lang1)langinfo(lang2)
运行结果:
2.面向对象编程
以对象为单位,对象拥有属性和方法
#面向对象class Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)lang1=Lang(‘C++‘,‘9.0‘)lang2=Lang(‘Python‘,‘8.5‘)lang1.langinfo()lang2.langinfo()
运行结果:
3.封装
对象可提供属性和方法,供外部调用,隐藏内部实现细节,和私有信息。
私有变量:属性名称前加两个下划线__
class Lang(object): def __init__(self,name,score): self.__name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.__name,self.score)lang1=Lang(‘C++‘,‘9.0‘)lang2=Lang(‘Python‘,‘8.5‘)print lang1.scoreprint lang1.__name
运行结果:
可以看出,__name为私有变量(private),score为公有变量(public)
那么如何修改私有变量的值?
通过公有方法设置和获取私有变量的值:
class Lang(object): def __init__(self,name,score): self.__name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.__name,self.score) def setName(self,name): self.__name=name def getName(self): print self.__namelang1=Lang(‘C++‘,‘9.0‘)lang2=Lang(‘Python‘,‘8.5‘)lang1.setName(‘C‘)lang1.getName()
运行结果:
4.继承
子类拥有父类的全部功能
#继承class Lang(object): def __init__(self,name,score): self.__name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.__name,self.score)class C(Lang): passclass Python(Lang): passlang1=C(‘C++‘,‘9.0‘)lang2=Python(‘Python‘,‘8.5‘)lang1.langinfo()lang2.langinfo()
运行结果:
子类如何拥有自己的功能?子类中定义和父类一样类型的方法,会覆盖父类的方法
class Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)class C(Lang): passclass Python(Lang): def langinfo(self): print "hello %s!"%(self.name)lang1=C(‘C++‘,‘9.0‘)lang2=Python(‘Python‘,‘8.5‘)lang1.langinfo()lang2.langinfo()
运行结果:
5.多态
子类一定是父类的实例,父类不一定是子类的实例
#多态class Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)class C(Lang): passclass Python(Lang): def langinfo(self): print "hello %s!"%(self.name)lang1=C(‘C++‘,‘9.0‘)lang2=Python(‘Python‘,‘8.5‘)lang3=Lang(‘Lang‘,‘10.0‘)print isinstance(lang1,C)print isinstance(lang1,Lang)print isinstance(lang3,C)print isinstance(lang3,Lang)
运行结果:
因为子类一定是父类的实例,因此可以将子类实例申明为父类类型
class Lang(object): def __init__(self,name,score): self.name=name self.score=score def langinfo(self): print ‘%s:%s‘%(self.name,self.score)class C(Lang): passclass Python(Lang): def langinfo(self): print "hello %s!"%(self.name)def test(lang): lang.langinfo()lang1=C(‘C++‘,‘9.0‘)lang2=Python(‘Python‘,‘8.5‘)test(lang1)test(lang2)
运行结果:
调用langinfo时,会使用子类实例的方法,这就是多态的意义。
Python面向对象编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。