wo-03 10-07 dfeixtay original
python OOP 基础
今日重观了毕设时匆匆学习的python,发现,正应了高中老师的老话,许多书许多知识,第一遍看,不懂,你把它放下,等过一段时间,等知识积累到一定程度,你再回来看,会发现有意外的收获。
今天我重看了L.P.C-22,收获颇多。
一个是,终于了解了什么是工厂类,类是产生实例的工厂。实例是一个独立的命名空间,类可以产生需要多个实例。
二个是python支持多重继承,搜索顺序是自下而上,自左而右。
关于类的调用,python有一个特殊的self参数,举例说明,说是:
I2.w和C3.w(I2)是一样的,其中I2是C3的实例
三是在python的类树编写中,属性是通过赋值语句添加在类中的,对self做赋值运算添加在实例中的。由于python是动态语言,没有变量和函数的声明,因此,在class中def的方法就有玄机。这就是下一条
四是在形如:
class C1(C2,C3):
def setname(self,who):
self.name = who
中,如果进行实例化I2 = C1(),则此时由于没有对name属性赋值,name属性是不存在的,非要当调用的setname方法后,方法对name属性赋值,这个值才存在,才可以调用。这个问题的解决方法就是下一条。
五是__init__()方法,就好像java中的构造函数,python里叫做构造器么?设置这个函数后,在类实例化时,就会自动调用这个函数,相应的属性就会被创建并赋值。它是运算符重载方法中的常用代表。
总之,通过重看,将__init__和构造函数结合在了一起;回想了实例调用类的方法时的过程:I2.w相当于传入了默认参数self,而C2.w(I2)中I2对应了self的位置,对应java,记得在java的类调用中,除了set与get方法,好像还有一个getInstance方法,这和python可能不大一样,当然接触的javaOOP类还比较少。
最后,python在eclipse中开发要用到的PyDev。
下载:
http://pydev.org/download.html for linux?不区分?
介绍及调试:
http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/
常用的IDE为IDLE。
下载:
另外,还有4本书,Programming Python, Python Pocket Reference, Python in a Nutshell, Python Essential Reference, Python Cookbook 可提供参考和例子,噢5本书。
记得,不要持续的信息冗余。。