python—面向对象,class定义、构造函数、析构函数、基本继承
进阶课 面向对象
1.class的基本定义
2.构造,析构函数
注意:在class类里面函数的参数第一个值必须是self,意思是指向对象本身的
1.class的基本定义
>>> class test(object):
... a = 1#a被称为test类的属性
... def func1(self):#func1被称为test类的方法
... pass
...
>>>
>>> t = test()#实例化
>>> print t.a#调用属性
1
>>> print t.func1()#调用方法
None
>>>
# 我们所有的class都是object的派生类
2.构造,析构函数
1)构造函数(__init__称为class的构造函数与构造方法,一般做为t实例化设置初始值而存在的。即一般是为了初始化对象时将必须要用到的属性、方法做一些定义,而存在的)
>>> class test(object):
... def __init__(self,arg1,arg2):#构造函数
... self.arg1 = arg1#对arg1进行初始的赋值,因此把arg1引入到test类的内部中
... self.arg2 = arg2#对arg2进行初始的赋值,因此把arg2引入到test类的内部中
... def func2(self):
... return self.arg1,self.arg2
...
>>> t = test(11,55)#11,55会引入arg1与arg2中
>>> print t.func2()
(11, 55)
>>>
# 我们所有的class都是object的派生类
析构函数(主要是销毁/删除临时的变量,主要对那些长期占用内存的临时变量销毁)
>>> class test(object):
... def __init__(self,arg1,arg2):#构造函数
... self.arg1 = arg1
... self.arg2 = arg2
... def func2(self):
... return self.arg1,self.arg2
... def __del__(self):#析构函数
... del self.arg1
... del self.arg2
...
>>> t = test(11,55)
>>> print t.func2()
(11, 55)
>>> print t.__del__()#销毁/删除临时的变量
None
>>> print t.func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in func2
AttributeError: 'test' object has no attribute 'arg1'
>>>
# 我们所有的class都是object的派生类
3.面向对象编程,是面向对象,而不是面向类。
>>> class d():
... def a():
... pass
...
>>>
4.对于新手,一开始就进行类设计是傻傻的类设计。
python学习思路:
1)伪代码 小程序-->直接写流程 大项目--->先分析结构
5.有趣的面向对象。
1)继承
>>> class base(object):
... def __init__(self,name):
... self.name = name#加self会被全局调用
...
>>> class b(base):#b类继承了base类的功能使用__init__方法
... def get_name(self):
... return self.name
...
>>> new_class = b("lilei")
>>> print new_class.get_name()
lilei
>>>
6.先实现,再优化,过早优化是万恶之源
7.kiss原则