Python面向对象

Python 面向对象

Python 是一门面向对象、解释型的高级编程语言。类似于 Java,Python 中创建类和实例化对象是简单的,本文将会详细讲解 Python 面向对象的知识。

类是定义具有相同属性和方法的对象的集合,对象是类数据结构的实例化,对象包括两个数据成员(类变量和实例变量)和方法。

1 面向对向技术的简述

本节将从类数据结构和其它技术两个方面简要介绍 Python 面向对象技术的定义。

  1. 类的数据结构
    • 类变量,定义在函数外部类内部的公有变量,通常不做实例化变量使用,被所有实例化对象共用。
    • 实例变量,是声明在类中的属性,称作实例化变量,用 self 修饰的变量。
    • 局部变量,定义在函数内部的变量。
    • 方法,类中定义的函数,与一般函数不同,函数必须含有参数且第一个参数必须为指向类对象的引用,通常用 self 表示。
    • 数据成员,分别是类变量和实例变量,它们用于处理类和实例对象的数据。
  2. 继承,派生类(derived class)继承基类(base class)的属性和方法。可以把派生类的实例化对象当作基类的实例化对象对待。派生类可以继承多个基类。
  3. 方法重写,当从基类继承的方法不能满足派生类的需求时,就需要对方法进行重写,也可以叫做方法的覆盖。
  4. 实例化,将类的数据结构实例化成一个具体的对象。

2 面向对象的快速入门

本节将要从语法格式配合案例的方式介绍 Python 面向对象技术的使用方法。

2.1 类的定义

本节将要介绍类定义的方法,格式。具体内容如下所示。

类的定义格式

python 复制代码
class ClassName:
	# 定义属性
	# 定义构造方法
	# 定义方法

案例

python 复制代码
calss People:
	# 定义实例化公有变量姓名,性别,年龄
    name = ''
    gender = 'male'
    age = 0
    # 定义实例化私有变量体重
    __weight=0
    # 定义构造函数 
    def __init__(self,n,g,a,w):
        self.name=n
        self.age=a
        self.gender=g
        self.__weight=w
        
    # 定义一般函数
    def greet(self):
        print("hello,oop! My name is %s and I am %d years old."%(self.name,self.age))
        

知识点

  • self 表示指向类实例的引用,表示当前实例对象的内存地址。当执行实例化对象操作时,会自动调用构造方法,初始化参数。

  • 在类中定义方法时,第一个参数必须存在且为指向实例化对象的引用,通常用 self 表示,它可以用来访问和操作类中定义属性。

  • 私有变量,在变量前添加两个下划线表示私有变量,私有变量只能在类中使用,不能够被外部访问。私有函数同理。

2.2 实例化对象及使用

本节主要讲解实例化类的方法,及实例化类后如何使用对象。

语法格式与使用方式

python 复制代码
# 类采用 2.1 节定义的 People 类
# 实例化类
p = People("oop","male",30,100)
# 属性的使用 对象名.属性名
print(p.name)
# 类方法的使用 对象名.方法名
p.greet()

2.3 继承与方法重写

本节主要讲解 Python面向对象的继承与方法重写。

  1. 继承

    类继承的语法格式

    python 复制代码
    class DerivedClass(BaseClass1,BaseClass2,...):
        # 类的数据结构

    Python 中类的继承可以实现多继承,注意,若父类中有同名方法,而子类使用时未指定,就从圆括号父类中从左至右的搜索该方法。

  2. 方法重写

    • Python 中的方法重写没有什么特别的,若父类中声明实现了方法,就在子类中重写声明并重写该方法。

    • 若子类中重写了某种方法,但想使用父类中未重写时的方法,可以使用内置函数 super()。例如:

      python 复制代码
      # 假设派生类为 DerivedClass,基类为 BaseClass。当中有方法 overfunc()
      d = DerivedClass()
      # 调用父类 overfunc()
      super(DerivedClass,d).overfunc()
    • 构造方法的重写,若子类未重写构造方法,实例化子类时自动调用父类构造方法,若子类重写构造方法,又要继承父类构造方法,则可以使用关键字 super,具体语法格式如下所示。

      python 复制代码
      super(子类,self).__init__(参数1,参数2,...)

      或使用如下方法继承父类构造方法。

      python 复制代码
      父类名称.__init__(self,参数1,参数2,...)

至此,Python 面向对象就分享到这里。

相关推荐
luoluoal2 小时前
基于python的web渗透测试工具(源码+文档)
python·mysql·django·毕业设计·源码
不会飞的鲨鱼2 小时前
腾讯录音文件语音识别 python api接口
人工智能·python·语音识别
007php0072 小时前
mac笔记本中在PHP中调用Java JAR包的指南
java·ide·python·面试·职场和发展·pycharm·php
智航GIS2 小时前
ArcGIS脚本工具之---左上至右下分组编号
python·arcgis
草莓熊Lotso2 小时前
Qt 控件美化与交互进阶:透明度、光标、字体与 QSS 实战
android·java·开发语言·c++·人工智能·git·qt
小妖6662 小时前
javascript 舍去小数(截断小数)取整方法
开发语言·前端·javascript
Amber7622 小时前
嵌入式C函数参数设计深度解析:指针与值传递的实战艺术
c语言·开发语言
青山是哪个青山2 小时前
C++ 核心基础与面向对象 (OOP)
开发语言·c++
小明同学012 小时前
[C++进阶]深入理解二叉搜索树
开发语言·c++·git·visualstudio