[阶段一] 10. Python面向对象编程

本文介绍了Python中的面向对象编程概念,包括类与对象、面向过程与面向对象的区别、类的定义与调用、构造函数、私有函数和变量、封装、装饰器、类的继承、多态以及多重继承等核心概念,并提供了相应的示例代码进行说明。
摘要由CSDN通过智能技术生成

python面向对象编程

  • 什么是面向对象?

类是一类具有同一特征的统称,如人类是一个类,张三、李四就是人类的某个具体对象。

利用(面向)对象(属性和方法)去进行编码的过程,就称为面向对象编程。面向对象编程是把构成事物的整个需求按照特点、功能划分,把这些存在共性的部分封装成对象,创建对象的目的不是为了完成某一个步骤,而是为了描述整个事物在整个解决问题的步骤中的行为。

python 中一切皆对象,比如变量也是对象,包括整型(int)、浮点型(float)、字符串(str)、列表(list)、元组(set)、字典和集合(set)。

面向过程:主要分析出解决问题所需要的步骤,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用即可。

面向对象:主要找出问题中的共性问题,作为对象进行操作。

面向过程是一种以过程为中心的编程思想,面向对象是一类以对象为核心的编程思想。

  • 类的定义与调用:

自定义对象数据类型就是面向对象中的类(class)的概念,通过自定义类,可以实例化出具体的对象,类有自己的属性和方法,实例化出来的对象也具备类的属性和方法。

可以把类理解为一个模板,通过这个模板可以创建出无数个具体的实例。类是抽象的模板,而实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法。

类并不能直接使用,通过类创建出来的实例才能使用。类的所有变量称为属性,类的所有函数称为方法。方法和函数不同的是,方法至少要包含一个 self 参数,且方法无法单独使用,只能和类实例出来的对象一起使用。

python 中,使用关键字 class 来声明类,类的名称首字母大写,多单词情况下每个单词首字母大写,这就是“驼峰命名法”。

用法:

class ClassName(object):
    attr = something
    
    def 函数名(self):
        函数具体实现代码块
        return 返回值

示例:

# coding:utf-8

class Person(object):
    name = 'xiaobai'

    def sing(self):
        print(f'{
     self.name} can sing')

xxx = Person()              #类的实例化
print(xxx.name)             #通过实例化进行属性调用
xxx.sing()                  #通过实例化进行函数调用

结果:

xiaobai
xiaobai can sing
  • self

self 是一个对象,它代表实例化的变量自身。self 是类方法中的必传参数,且必须放在第一个参数位置。

定义类属性的变量可以不用加上 self,但在定义类方法中的变量是必须要加上 self 的。self 中的变量与含有 self 参数的函数可以在类中的任何一个函数内随意调用。

如果在类中定义函数时加了 self 参数,那这个函数是类实例的方法,而不是类的方法。反之,如果在类中定义函数时没有加 self 参数,那这个函数就只是类的方法,而不是类实例的方法。

  • 类的构造函数:

构造函数,是类中的一种默认函数,用来将类实例化的同时,将参数传入类中。构造函数应该定义在类中所有函数的最上面,作为类的第一个函数。

用法:

class ClassName(object):
    def __init__(self, a, b):               #构造函数
        self.a = a
        self.b = b

示例:

# coding:utf-8

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def sing(self):
        print(f'{
     self.name} can sing')

    def study(self):
        print(f'{
     self.name}\'s age is {
     self.age}, so he is an elementary school student')

xiaobai = Person('xiaobai', 10)
print(xiaobai.name)
xiaobai.sing()
xiaobai.study()

结果:

xiaobai
xiaobai can sing
xiaobai's age is 10, so he is an elementary school student

对于一个对象,构造函数 __init__ 标志着对象生命的开始,系统会从内存中内配一个内存块给这个对象。析构函数 __del__ 标志着对象生命的结束,它会删除对象,系统会从内存中释放这个内存块。

  • 私有函数和私有变量:

私有函数与私有变量,就是无法被实例化后的对象调用的类中的函数与变量。

私有函数与私有变量,只希望类内部业务调用使用,不希望被使用者调用。因此,类内部可以调用私有函数与私有变量。

私有函数与私有变量,只需要在变量或函数前添加双下划线 __ 来定义。尽量不要在实例化对象中直接调用私有函数和私有变量。

用法:

class ClassName(object):
    def __init__(self, a):
        self.a = a
        self.__b = b                #私有变量
    
    def __函数名(self):             #私有函数
        函数具体实现代码块
        return 返回值

示例:

# coding:utf-8

class Person(object):
    def __init__(self, name):
        self.name = name
        self.__age = 10

    def __sing(self):
        return f'{
     self.name} can sing'

    def sing(self):
        result = self.__sing()
        return result

    def __study(self):</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值