python学习总结之类对象

来源:互联网 发布:sql注入进阶 编辑:程序博客网 时间:2024/06/07 01:02

面向对象(OO)是一种编程的思想而不是一种语言,python是用C语言来现实的面向对象的语言,面向对象的目的就是代码的重用,减少重复性的开发,面向对象的代码重用机制包括封装、继承、多态。面向对象的核心则是抽象、分离接口和实现。

这里让我们来一起探讨一下python的面向对象的具体格式和方法:

首先是self参数变量,它是区别方法和一般函数的一个标识,类方法必须含有这个self的变量:

#修改了sayhi()方法,将self去掉后:就会出现错误,说是没有参数。        def sayHi():                print 'hello,how are you?', self.name[root@fsailing1 class]# py method.pyTraceback (most recent call last):  File "method.py", line 9, in ?    p.sayHi()TypeError: sayHi() takes no arguments (1 given)
init和del方法,这两个方法是在类对象被实例化话的时候就已经被初始化了,或者类对象被回收之后自动出发del方法

类的参数变量和对象的参数变量:

class Person:        population=0        def __init__(self,name):                self.name=name                Person.population+=1                print '(Initializing %s)' %self.name        def __def__(self):                print '%s says bye.' %self.name                Person.population-=1                if Person.population==0:                        print 'I am the last one.'                else:                        print 'there are still %d people left' %Person.population        def sayhi(self):                print 'hi,my name is %s' %self.name        def howMany(self):                if Person.population==1:                        print 'I am the only person here.'                else:                        print 'We have %d persons here.' %Person.population
继承,注意书写的格式,这里的的子类覆盖了父类的init方法和tell方法
class SchoolMember:        '''Represents any school member.'''        def __init__(self,name,age):                self.name=name                self.age=age                print '(Initialized schoolMember: %s)' %self.name        def tell(self):                '''Tell my details.'''                print 'Name:"%s"  Age:"%s"' %(self.name,self.age)class Teacher(SchoolMember):        '''Represents a teacher.'''        def __init__(self,name,age,salary):                SchoolMember.__init__(self,name,age)                self.salary=salary                print '(Initialized Teacher: %s)' %self.name        def tell(self):                SchoolMember.tell(self)                print 'Salary: "%d"' %self.salaryclass Student(SchoolMember):        '''Represents a student.'''        def __init__(self,name,age,marks):                SchoolMember.__init__(self,name,age)                self.marks=marks                print '(Initialized Student :%s)' %self.name        def tell(self):                SchoolMember.tell(self)                print 'Marks is :"%d"' %self.marks