Python面向对象基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象基础相关的知识,希望对你有一定的参考价值。

一、OOP

oop就是代码的重用,通过分解代码,最小化代码的冗余以及对现存的代码进行定制来编写程序;OOP模型中有两种对象,类对象和实例对象。类对象提供默认行为,是生产实例对象的工厂;类对象和实例对象都有各自命名空间。

二、python类的主要特性

? class语句创建类对象并将其赋值给变量名
? class语句内的顶层赋值语句会创建类的属性
? 类属性提供对象的状态和行为

三、python实例对象的主要特性

? 每次类调用时,都会创建并返回新的实例对象
? 每个实例对象继承类的属性并获得了自己的命名空间
? 每个实例对象通过构造方法获得每个实例自己的属性

四、创建类和实例对象-类的封装

封装,是将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称为封装。外界只能通过对象的方法访问对象,因此封装同时也实现了对象的数据隐藏

class Person():
#类的属性--静态属性
country="China"

#封装--初始化方法
def __init__(self,*args):
    self.name=args[0]
    self.age=args[1]
    self.aggr=args[2]
    self.sex=args[3]

#方法
def walk(self,n):
    print("%szoule%sbu"%(self.name,n))

#调用类创建实例对象,自动执行构造方法__init__
jonny=Person(‘jonny‘,11,23,‘man‘)

#实例对象调用类的方法
jonny.walk(10)

#实例对象调用类的属性
print(jonny.country)

五、类的继承

单继承

类可以通过继承进行定制;类的继承丰富了软件的层级,在层级较低的地方覆盖现有的属性,让其行为特定化。
在python中,实例对象从类中继承,而类继承于超类
? 超类写在类开头的括号中
? 类从其超类中继承属性
? 实例会继承所有可读取类的属性
? 每次实例对象的属性调用都会进行类树搜索
? 逻辑的修改是通过创建子类,而不是修改超类

#创建父类---经典类
class a():
    a1="11"
#创建子类,继承父类a
class b(a):
    b1="22"
#调用父类的属性
print(b.a1)

以上的例子中父类是经典类,因为父类未继承object类;继承object类的父类是新式类

#创建父类---新式类
class a(object):
    a1="11"
#创建子类,继承父类a
class b(a):
    b1="22"
#调用父类的属性
print(b.a1)

在继承中,父类是经典类那么子类就是经典类;父类是新式类,子类就是新式类

多继承

python支持继承多个类,那么在继承父类的属性和方法时改怎么找呢?

class D(object):

    def display(self):
        print(‘D.display‘)

class C(D):

    def display(self):
        print(‘C.display‘)

class B(D):

    def display(self):
        print(‘B.display‘)

class A(B,C):

    def display(self):
        print(‘A.display‘)

a=A()
a.display()

执行display方法时,查找顺序为 A--B--C--D

技术分享图片

六、类的多态

类的多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。

class Person():
def display(self):
    pass

class Man(Person):
    def display(self):
        print("man")

class Woman(Person):
    def display(self):
        print("woman")

def func(obj):
    obj.display()

#实例化对象
man1=Man()
woman1=Woman()

#多态
func(man1)
func(woman1)

以上是关于Python面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

python基础之面向对象

python——面向对象基础

Python面向对象基础

Python面向对象基础