Python_封装和继承

封装

Python的封装是一种将数据(属性)和行为(方法)捆绑在一起的操作,以实现数据隐藏和抽象。
封装的目的是保护对象内部的数据不被外部直接访问和修改,同时提供接口与外界交互。
  • 私有属性:在Python中,通过在属性名前添加两个下划线(__)来定义私有属性。
  • getter和setter方法:用于获取和设置私有属性的值。
  • 类方法:用于实现类级别的功能。

Python封装示例:

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有属性
        self.__age = age    # 私有属性
    # getter方法
    def get_name(self):
        return self.__name
    # setter方法
    def set_name(self, name):
        self.__name = name
    # getter方法
    def get_age(self):
        return self.__age
    # setter方法
    def set_age(self, age):
        if age >= 0:
            self.__age = age
        else:
            print("年龄不能为负数")
# 创建Person对象
person = Person("张三", 25)
# 访问私有属性(错误示例,会报错)
# print(person.__name)
# 通过getter方法获取私有属性
print(person.get_name())  # 输出:张三
# 通过setter方法设置私有属性
person.set_name("李四")
print(person.get_name())  # 输出:李四
# 尝试设置非法年龄
person.set_age(-1)  # 输出:年龄不能为负数

此例中,__name__age 是私有属性,不能直接从外部访问。通过提供get_nameset_nameget_ageset_age方法来间接访问和修改这些属性。以确保数据的安全性和有效性。

继承

继承允许我们创建一个新的类(称为子类或派生类)来继承另一个类(称为基类或父类)的属性和方法。其目的是实现代码复用和扩展已有类的功能。
  • 单继承:子类继承一个基类。
  • 多继承:子类可以继承多个基类。
  • 方法重写:子类可以重写基类的方法,以提供特定的实现。
  • super()函数:在子类中调用基类的方法。
Python继承示例:
# 基类
class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        pass  # 在基类中不实现,留给子类去实现
# 派生类
class Dog(Animal):
    def speak(self):
        return "汪汪汪"
# 另一个派生类
class Cat(Animal):
    def speak(self):
        return "喵喵喵"
# 创建Dog对象
dog = Dog("旺财")
print(dog.name + "说:" + dog.speak())  # 输出:旺财说:汪汪汪
# 创建Cat对象
cat = Cat("咪咪")
print(cat.name + "说:" + cat.speak())  # 输出:咪咪说:喵喵喵

此例中,Animal 是一个基类,有一个属性 name 和一个方法 speakDogCat 是从 Animal 继承而来的子类,它们都重写了 speak 方法以提供特定的实现。

方法重写和super(),在子类中调用基类的方法,可使用 super() 函数:
class Dog(Animal):
    def speak(self):
        return super().speak() + ",汪汪汪"  # 调用基类的speak方法
# 现在,如果基类Animal的speak方法有实现,它将被调用
# 然后Dog的speak方法会在基类方法的基础上添加自己的实现

在修改后的 Dog 类中,speak 方法首先调用了基类 Animalspeak 方法,然后添加了自己的实现。

相关推荐

  1. Python_封装继承

    2024-07-19 19:30:01       16 阅读
  2. python继承封装多态

    2024-07-19 19:30:01       29 阅读
  3. 继承深拷贝封装

    2024-07-19 19:30:01       43 阅读
  4. Python基础(二十六、封装继承

    2024-07-19 19:30:01       47 阅读
  5. python 面向对象(封装继承、多态)

    2024-07-19 19:30:01       35 阅读
  6. python继承多态

    2024-07-19 19:30:01       29 阅读
  7. C++中的封装继承多态

    2024-07-19 19:30:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 19:30:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 19:30:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 19:30:01       58 阅读
  4. Python语言-面向对象

    2024-07-19 19:30:01       69 阅读

热门阅读

  1. SQL Server 和 MySQL 的主要区别

    2024-07-19 19:30:01       20 阅读
  2. 益铭祥元宇宙

    2024-07-19 19:30:01       19 阅读
  3. 计算机视觉7 kag比赛

    2024-07-19 19:30:01       19 阅读
  4. 《管理表格系统》开发心得

    2024-07-19 19:30:01       21 阅读
  5. gdb 的常用指令

    2024-07-19 19:30:01       20 阅读
  6. 矩形加矩形求和

    2024-07-19 19:30:01       20 阅读
  7. TCP协议

    TCP协议

    2024-07-19 19:30:01      19 阅读
  8. 深入探讨:Node.js、Vue、SSH服务与SSH免密登录

    2024-07-19 19:30:01       21 阅读
  9. GitHub每日最火火火项目(7.18)

    2024-07-19 19:30:01       18 阅读
  10. 微服务常用的中间件有哪些?都有什么用途?

    2024-07-19 19:30:01       18 阅读
  11. 逆向工程四个抽象层次-系统架构师(三十)

    2024-07-19 19:30:01       21 阅读
  12. OpenCV——图像与视频的读取

    2024-07-19 19:30:01       19 阅读
  13. 物理设计基础概念 —— Pin

    2024-07-19 19:30:01       17 阅读