面向对象特点:
1. class 后首写字母必须大写
2. self为实例化对象的内存指向,每个方法默认必须有。必须要注意每一个self的内存对象指的是哪一个,还有就是在哪个方法内使用的。
基础格式:
class Foo(object): #class + 类名称(首字母大写)(object为生成内存地址使用,py3不写也可以,py2必须写) def __init__(self,name,age,): #初始化,在执行序列化时,就需要执行初始化过程。 self.name = name #将对象和导入的参数进行对应。 self.age = age def func(self): print(self.name,self.age) #调用类的变量。 obj1 = Foo('xuan',22) #序列化一个类,并赋值给obj1这个变量中。 obj1.func() #运行obj1内的方法。
三大特点:
1. 封装
1. 将多个相同类型的方法封装到一个类中,使其统一,2. 将常用变量保存在类中,以供方法调用。
class Foo(object): name = 'xuan' #将常用变量存在类中,方便方法调用 def func(self): print(self.name) obj1 = Foo() print(obj1.name)
2. 继承
将一个或多个类关联到一起,当此类中没有对应的方法时,会查找父类(继承类),多个继承类则从左至右依次查找。
注意:
1. 当多继承时,一定要注意self的指向和初始方法调用点在哪里。
2. 多个类中如果有多个相同方法,可以放到基类中避免重复编写(相当于装饰器)。
class Foo(object): #父类(基类) name = 'xuan' def func(self): print(self.name) class Content(Foo): #子类(派生类) def func1(self): print(self.name) obj1 = Content() print(obj1.name)
3. 多态(鸭子模型)
在方法传参时,python不会限制参数的具体类型,但对于方法内使用时就必须按照参数的规定方法使用。
鸭子模型:当多种生物(多态)同时发出鸭子的叫声时,就会被误以为是鸭子再叫。
class Foo(object): def func(self,name): #name可以是任何形态的数据类型。(任何物种) print(name[2]) #而多种形态下,必须要有可切片功能的才能正常执行。(鸭子叫) obj1 = Foo() obj1.func('haha')