1. 首先我需要明白几个基本概念,如何你做过C++和Java这些开发,那么这节对于你而言仅仅是小菜一碟而已
类:创建了一个新的类型
对象:实例化了一个类
域:在对象或者类中定义的变量
方法:对象使用了属于类中的函数而具有的功能实现
域和方法合称类的属性。
类是用class关键字创建,同样的类的域和方法被列在一个缩进块中
2. Python中类的方法和函数的区别:
其实也就一个区别,方法比函数多一个叫做self的参数,但在调用过程中你不用给这个参数赋值,而且它这个变量指代对象本身。注意:至于这个变量名为什么叫self,其实我也不知道,因为几乎所有人都这样说,我们全当这是标准。
所以尽管你定义了一个不需要参数的方法,你依然需要给这个方法定义一个self的参数
3. 讲了这么多的概念我们用一个实例体会一下,其实也是很好理解的
4. 在类与对象的变量:
类的变量由一个类的所有对象(实例)共享使用,只有一个类变量的拷贝。
而对象的变量由类的每个对象/实例拥有,每个对象有自己对这个域的一份拷贝,即他们不是共享的,有点全局变量和局部变量的味道,理解一下就好
5. 自己对于C++有一些学习,所以在这说两个方法,几乎每个类都会有这两个方法吧,一个就是初始化方法。另一个就是释放的方法:
__init__(self,…):
__del__(self):
初始化的方法在实例化一个对象的时候会自动调用,而释放的方法在程序退出的时候也会自动调用,故不需要使用者专门再去写调用这两个的过程我们可以体会一下下面的代码,用pdb跟踪一下代码的运行过程便一目了然
6. 继承:面向对象的编程带来的主要好处之一就是代码的重用,通过继承机制便可以实现代码的重用,在使用过程中需要注意一下几点:
(注这里为引用别人的,大家可以参考这篇博客,个人感觉写的很好
链接:http://www.cnblogs.com/Joans/archive/2012/11/09/2757368.html)
1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。有别于C#
2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。