谈起面向对象,对于大部分程序员来说都是耳熟能详的玩意,这个面向对象编程说白了无非就是类和对象,方法和
成员变量,封装等等。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不能自
己主动的去调用父类的构造函数,必须是你自己去老实的调用父类的构造函数,然后对于这个父类的变量或者什么函
数的都可以直接使用父类的函数名或者变量名就可以直接调用了
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow