📜  Python面向对象编程(1)

📅  最后修改于: 2023-12-03 15:19:36.842000             🧑  作者: Mango

Python面向对象编程

Python是一种面向对象编程语言,它支持类、对象、继承、封装和多态等常见面向对象编程特性。在Python中,类是最基本的面向对象编程单位,通过定义类,可以创建对象,实现对数据和行为的封装,从而构建出复杂的系统。

类和对象

在Python中,类通过class关键字定义,可以包含属性(数据)和方法(行为)。对象则是类的一个实例,通过调用类的构造函数__init__来创建。下面是一个简单的类和对象的例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, my name is", self.name, "and I'm", self.age, "years old.")

p1 = Person("Alice", 25)
p2 = Person("Bob", 30)

p1.say_hello()   # 输出:Hello, my name is Alice and I'm 25 years old.
p2.say_hello()   # 输出:Hello, my name is Bob and I'm 30 years old.

在上面的例子中,Person类有两个属性nameage,以及一个方法say_hello。通过调用类的构造函数__init__来创建对象,并且给对象的属性赋值。通过调用对象的方法say_hello,可以输出对象的信息。

继承和多态

在Python中,继承用于在一个类的基础上创建另一个类。子类可以访问父类的属性和方法,并且可以重写父类的方法。多态则是指不同的子类可以使用相同的方法名,但是实现不同的行为。下面是一个继承和多态的例子:

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

    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        print(self.name, "barks")

class Cat(Animal):
    def make_sound(self):
        print(self.name, "meows")

a1 = Dog("Fido")
a2 = Cat("Kitty")
animals = [a1, a2]

for animal in animals:
    animal.make_sound()   # 输出:Fido barks 和 Kitty meows

在上面的例子中,Animal类是一个基类,DogCat类从Animal类继承而来,并且重写了make_sound方法。通过多态的特性,可以使用相同的方法名make_sound来输出不同的结果。

封装

在Python中,封装用于将对象的属性和方法隐藏起来,仅仅向外暴露出一些接口方法。通过封装,可以避免对象的属性和方法被外部直接访问和修改,从而保证对象的安全性和一致性。下面是一个封装的例子:

class Counter:
    def __init__(self):
        self.__count = 0    # 使用双下划线来将属性隐藏起来

    def increment(self):
        self.__count += 1

    def reset(self):
        self.__count = 0

    def get_count(self):
        return self.__count

c = Counter()
c.increment()
c.increment()
print(c.get_count())   # 输出:2
c.reset()
print(c.get_count())   # 输出:0

在上面的例子中,Counter类将count属性隐藏起来,通过接口方法incrementresetget_count来访问和修改。通过这种方式,外部无法直接访问和修改count属性。