Python学习系列(八)( 面向对象基础)
Python学习系列(八)( 面向对象基础)
一,面向对象
二、继承1,域:属于一个对象或类的变量。有两种类型,即实例变量—属于每个实例/类的对象;类变量—属于类本身。2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法。域和方法合称为类的属性。类使用class关键字创建,类的属性被列在一个缩进块中。3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Python会提供。这个特别的变量指对象本身,按照惯例命名为self。self等价于C++中的self指针和Java,C#中的this。创建一个类:View Code1 class Person: 2 pass 3 4 p=Person() 5 print p 6 >>> ============= RESTART ================================ 7 >>> 8 <__main__.Person instance at 0x02A99B98>4,使用对象的方法:1)View Code1 class Person: 2 def sayHi(self): 3 print 'Hello,how are you?' 4 5 p=Person() 6 p.sayHi()2)使用__init__方法View Code1 class Person: 2 def __init__(self,name): 3 self.name=name 4 5 def sayHi(self): 6 print 'Hello,my name is',self.name 7 8 p=Person('John') 9 p.sayHi()3)使用类与对象的变量
View Code1 class Person: 2 '''Represents a person.''' 3 population=0 4 def __init__(self,name): 5 '''Initializes the person's data.''' 6 self.name=name 7 print '(Initializing %s)'%self.name 8 Person.population +=1 9 10 def __del__(self): 11 '''I'm dying.''' 12 print '%s says bye.'%self.name 13 Person.population -=1 14 if Person.population==0: 15 print '''I'm the last one.''' 16 else: 17 print 'There are still %d people left.'%Person.population 18 19 def sayHi(self): 20 '''Greeting by the person. 21 22 Really,that's all it does.''' 23 print 'Hello,my name is%s.'%self.name 24 25 def howMany(self): 26 '''Prints the current population.''' 27 if Person.population==1: 28 print '''I'm the only one here.''' 29 else: 30 print 'We have %d person here.'%Person.population 31 32 33 p=Person('John') 34 p.sayHi() 35 p.howMany() 36 37 p1=Person('John1') 38 p1.sayHi() 39 p1.howMany() 40 41 p.sayHi() 42 p.howMany()属性参考:使用self变量来参考同一个对象的变量和方法。
三、小结1,继承是用来描述类之间的类型和子类型关系。2,多态现象:一个子类型在任何需要父类型的场合可以替换父类型,即对象可以被视作父类的实例。3,基本类(超类)和子类(导出类)4,示例:View Code1 class SChoolMember: #教师与学生的公有属性,基类 2 '''Represents any SChoolMember.''' 3 def __init__(self,name,age): 4 '''Initializes the person's data.''' 5 self.name=name 6 self.age=age 7 print '(Initializing SChoolMember %s)'%self.name 8 9 def tell(self): 10 '''Tell my details.''' 11 print '''Name:%s\nAge:%s'''%(self.name,self.age) 12 13 class Teacher(SChoolMember): #教师子类 14 '''Represents any Teacher.''' 15 def __init__(self,name,age,salary): 16 '''Initializes the person's data.''' 17 SChoolMember.__init__(self,name,age) #继承 18 self.salary=salary 19 print '(Initializing Teacher %s)'%self.name 20 21 def tell(self): 22 '''Tell my details.''' 23 SChoolMember.tell(self) #继承 24 print '''Salary:%d'''%self.salary 25 26 class Student(SChoolMember): #学生子类 27 '''Represents any Student.''' 28 def __init__(self,name,age,marks): 29 '''Initializes the person's data.''' 30 SChoolMember.__init__(self,name,age) #继承 31 self.marks=marks 32 print '(Initializing Student %s)'%self.name 33 34 def tell(self): 35 '''Tell my details.''' 36 SChoolMember.tell(self) #继承 37 print '''Marks:%d'''%self.marks 38 39 40 t=Teacher('Mrs.Jhon',40,4000) 41 s=Student('zhangbc',23,90) 42 members=[t,s] 43 for member in members: 44 member.tell() 45 print ''
时隔快一年了,动笔生疏了,想想还是学习比较踏实吧。本篇幅较短,重在理解,后续逐渐完善。
PS:如果你觉得文章对你有所帮助,别忘了推荐或者分享,因为有你的支持,才是我续写下篇的动力和源泉!
出处: http://www.cnblogs.com/zhangbc/
格言: 我愿意做一只蜗牛,慢慢地向前爬,不退缩,不泄气,做好自己,立足当下,展望未来!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。