Python——面向对象

删除回忆录丶 提交于 2020-04-08 12:48:15

 

面向对象特点:

 

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')

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!