谈起面向对象,对于大部分程序员来说都是耳熟能详的玩意,这个面向对象编程说白了无非就是类和对象,方法和
成员变量,封装等等。Python作为一门面向对象的语言,肯定对于这些的支持是没问题,下面我们来说一下Python的面
向对象编程的问题。首先是Python的声明一个类然后创建一个对象,这个是最基本的玩意。代码如下
'''
Created on 2013-1-25
@author: Administrator
'''
class Person:
def __init__(self,name):#相当于构造函数
print("构造函数启动")
self.name=name
def sayHi(self):
print("Hello World",self.name)
p = Person("rookie")
p.sayHi()
可以看到,其实声明一个类非常的简单,就是使用class关键字,然后对于这个init函数,其实就是相当于构造函数,
这个self指针是必须的,不管你的函数是否有参数,这个self都是必不可少的一个参数,主要原因是Python是一门动态
语言,支持类型的转变,所以必须知道自己的对象指向的类是谁,所以需要这个指针。下面我们再来说一下这个对象
的变量和函数的问题吧
'''
Created on 2013-1-25
@author: Administrator
'''
class Person:
population=0
def __init__(self,name):
print("Person类正在实例化")
self.name=name
print("类名为",self.name)
self.population += 1
def __del__(self):#相当于C++里面的析构函数
print("Person类正在析构",self.name)
self.population -= 1
if self.population == 0:
print("I am the last One")
else:
print("There are still",self.population,"left")
def sayHi(self):
print("Hello World",self.name)
def howMany(self):
print("We have,",self.population,"Person Now")
swaroop = Person("swaroop")
swaroop.sayHi()
swaroop.howMany()
kalam = Person("kalam")
kalam.sayHi()
kalam.howMany()
swaroop.sayHi()
可以看到,声明成员函数和声明一个函数是一样的,而声明一个变量就是直接写上这个就行,更是无比的简单,下面
我们再来说一下这个继承的问题,先看一个简单的例子
'''
Created on 2013-1-25
@author: Administrator
'''
class SchoolMember:
def __init__(self,name,age):
self.name=name
self.age=age
print(self.name,"正在实例化")
def tell(self):
print("Name is",self.name,"and Age is",self.age)
class Teacher(SchoolMember):
def __init__(self,name,age,salary):
SchoolMember.__init__(self, name, age)
self.salary=salary
print("教师类正在实例化")
def tell(self):
SchoolMember.tell(self)
print("工资为",self.salary)
t = Teacher("A",12,300)
t.tell()
这个继承主要就是在声明类的时候给一个元组就行,这貌似说明Python支持多重继承,呵呵。还有就是Python不能自
己主动的去调用父类的构造函数,必须是你自己去老实的调用父类的构造函数,然后对于这个父类的变量或者什么函
数的都可以直接使用父类的函数名或者变量名就可以直接调用了