亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

精通 Python 面向对象编程:类、继承、封装与多态

Python 面向对象编程

本指南通过实战示例讲解 Python 面向对象编程(OOP)核心概念,助你构建健壮、可复用代码。

视频:Python 面向对象编程

面向对象编程

Python 是支持多种编程风格的多范式语言。最强大的方法之一是用对象建模问题——即面向对象编程(OOP)。

对象具备两个基本特征:

例如,鹦鹉 是一个对象,拥有 name、age、color 等属性,以及 sing()、dance() 等行为。

Python OOP 促进代码复用,遵循 DRY(Don't Repeat Yourself)原则。

类

class 是定义对象结构和行为的蓝图。可视为鹦鹉的详细草图:规定鹦鹉可拥有的属性和动作。

class Parrot:
    pass

此处 Parrot 为空类。稍后创建实例。

对象

对象(或实例)是类的具体实现。定义类时不分配内存,仅存在模板。实例化类创建对象。

obj = Parrot()

下例构建功能性 Parrot 类并创建两个实例 blu 和 woo:

class Parrot:
    # 类属性
    species = "bird"
    # 实例属性
    def __init__(self, name, age):
        self.name = name
        self.age = age
# 实例化类
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)
# 访问类属性
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))
# 访问实例属性
print("{} is {} years old".format(blu.name, blu.age))
print("{} is {} years old".format(woo.name, woo.age))

输出

Blu is a bird Woo is also a bird Blu is 10 years old Woo is 15 years old

此例中 species 为所有鹦鹉共享的类属性,而 name 和 age 为各对象独有的实例属性。

方法

方法是类中定义的函数,描述对象行为。在类实例上调用。

class Parrot:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def sing(self, song):
        return f"{self.name} sings {song}"
    def dance(self):
        return f"{self.name} is now dancing"
# 实例化并使用方法
blu = Parrot("Blu", 10)
print(blu.sing("'Happy'"))
print(blu.dance())

输出

Blu sings 'Happy' Blu is now dancing

继承

继承让新类继承现有类的属性和方法,促进代码复用和逻辑层级。

# 基类
class Bird:
    def __init__(self):
        print("Bird is ready")
    def whoisThis(self):
        print("Bird")
    def swim(self):
        print("Swim faster")
# 派生类
class Penguin(Bird):
    def __init__(self):
        super().__init__()
        print("Penguin is ready")
    def whoisThis(self):
        print("Penguin")
    def run(self):
        print("Run faster")
peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

输出

Bird is ready Penguin is ready Penguin Swim faster Run faster

封装

封装限制对对象内部状态的直接访问,保护数据完整性。Python 中以下划线(单或双)前缀表示私有属性。

class Computer:
    def __init__(self):
        self.__maxprice = 900
    def sell(self):
        print(f"Selling Price: {self.__maxprice}")
    def setMaxPrice(self, price):
        self.__maxprice = price
c = Computer()
c.sell()
# 尝试直接修改
c.__maxprice = 1000
c.sell()
# 使用 setter 方法
c.setMaxPrice(1000)
c.sell()

输出

Selling Price: 900 Selling Price: 900 Selling Price: 1000

多态

多态允许不同类的对象通过共享接口处理,使代码能灵活操作各种对象类型。

class Parrot:
    def fly(self):
        print("Parrot can fly")
    def swim(self):
        print("Parrot can't swim")
class Penguin:
    def fly(self):
        print("Penguin can't fly")
    def swim(self):
        print("Penguin can swim")
# 通用接口
def flying_test(bird):
    bird.fly()
blu = Parrot()
peggy = Penguin()
flying_test(blu)
flying_test(peggy)

输出

Parrot can fly Penguin can't fly

关键要点

Python

  1. 树莓派 OpenCV 自动视觉跟踪:云台舵机实时锁定彩色目标
  2. C# 类与对象:面向对象编程的基石
  3. 精通Python数据类型:实战指南
  4. 精通Python运算符:全面指南
  5. 精通 Python 字典:创建、操作与进阶技巧
  6. 精通 Python 自定义异常:实战指南
  7. 精通 Python 继承:概念、语法与实战示例
  8. Python 面向对象编程完全指南:从基础到进阶
  9. Python 网络编程:掌握 Socket 与高级协议
  10. Java 单例模式详解:安全实现与使用指南
  11. 精通 Java:理解对象、类与核心 OOP 概念
  12. Java 对象序列化:持久化、反序列化与版本演进