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 方法,然后添加了自己的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值