python面向对象——三大特征

Python 作为一门面向对象的编程语言,它支持面向对象编程(OOP)的三大基本特征,这些特征使得 Python 强大而灵活,它们是:

  1. 封装(Encapsulation)
  • 封装是面向对象编程的一种方式,它将数据(属性)和操作数据的代码(方法)捆绑在一起,形成称为“对象”的实体。这种机制可以隐藏内部实现细节,并且只暴露有限的接口与外部交互。
  • 封装可以通过使用私有(private)或保护(protected)修饰符来实现,但是在 Python 中没有严格的访问控制,通常会使用单下划线 _ 或双下划线 __ 来表示属性是受保护的或私有的,但这并不是语言层面的强制,而是一种约定。
class Car:
    def __init__(self, color, mileage):
        self.color = color           # 公开属性
        self.__mileage = mileage     # 私有属性

    def drive(self, km):
        self.__mileage += km

    def get_mileage(self):
        return self.__mileage

# 使用
my_car = Car('red', 0)
my_car.drive(10)
print(my_car.get_mileage())  # 正确的访问方式
  1. 继承(Inheritance)
  • 继承是一种创建新类的方式,新创建的类称为子类(或派生类),它继承了一个或多个父类(或基类)的属性和方法。
  • 继承不仅允许子类重用父类的代码,还支持多态。子类可以继承父类的所有属性和方法,同时还可以添加自己的属性和方法,或者重写父类的一些行为。
  • 在 Python 中,所有的类都隐式继承自 object 类,这是所有类的基类。使用 super() 函数可以调用父类的方法。

在 Python 中,所有的类都隐式继承自 object 类,这是所有类的基类。使用 super() 函数可以调用父类的方法。

class Animal:
    def __init__(self, species):
        self.species = species

    def make_sound(self):
        pass

class Dog(Animal):
    def __init__(self, name, species='Dog'):
        super().__init__(species)
        self.name = name

    def make_sound(self):
        return f"{self.name} says Woof!"
# 使用
buddy = Dog('Buddy')
print(buddy.make_sound())  # 输出: Buddy says Woof!
  1. 多态(Polymorphism)

    • 多态是指不同类的对象对于相同的方法可以有不同的响应。换句话说,多态允许我们定义一个接口,并有多个形式(类)实现这个接口。
    • 在 Python 中,多态是隐式的,因为 Python 是动态类型的语言,它不需要在编译时确定对象的类型,因此,任何对象都可以被用于任何期望某种类型的场合。
    class Dog:
        def speak(self):
            return "Woof!"
    
    class Cat:
        def speak(self):
            return "Meow!"
    
    def animal_sound(animal):
        print(animal.speak())
    
    # 使用
    my_dog = Dog()
    my_cat = Cat()
    animal_sound(my_dog)  # 输出: Woof!
    animal_sound(my_cat)  # 输出: Meow!
    

在这个例子中,animal_sound 函数接受任何有 speak 方法的对象,不论是 Dog 类还是 Cat 类的实例,展示了多态的概念。

这三大特征是面向对象编程的基础,它们带来了代码的可重用性、可扩展性和可维护性等优点。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值