返回

Python 编程骚操作连载(二)- 类与对象

后端

Python 编程骚操作连载(二)- 类与对象

面向对象编程(OOP)是一种编程范式,它将数据和行为组织成称为对象的概念。对象可以包含数据,也可以执行操作。类是对象的蓝图,它定义了对象的数据和行为。

1. 类和对象

在 Python 中,类使用 class 来定义。类名应该以大写字母开头。类中的数据称为属性,行为称为方法。

例如,我们可以定义一个 Person 类如下:

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

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

在这个类中,__init__() 方法是构造函数,它在创建对象时被调用。nameage 是属性,它们存储了对象的数据。greet() 方法是一个方法,它可以被对象调用来执行操作。

要创建 Person 类的对象,我们使用 () 运算符。例如,我们可以创建一个名为 alicePerson 对象如下:

alice = Person("Alice", 20)

现在,我们可以使用 . 运算符来访问 alice 对象的属性和方法。例如,我们可以使用 alice.name 来访问 alice 的姓名,或者我们可以使用 alice.greet() 来让 alice 打招呼。

2. 继承

继承是 OOP 中的一个重要概念。它允许我们创建新的类,这些类从现有的类继承数据和行为。

例如,我们可以创建一个 Student 类,它从 Person 类继承。Student 类可以拥有自己的数据和行为,但它也可以继承 Person 类的数据和行为。

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

    def study(self):
        print(f"{self.name} is studying.")

在这个类中,__init__() 方法调用 super().__init__(name, age) 来调用 Person 类的构造函数。这将设置 nameage 属性。school 属性是 Student 类特有的。study() 方法也是 Student 类特有的。

要创建 Student 类的对象,我们使用 () 运算符。例如,我们可以创建一个名为 bobStudent 对象如下:

bob = Student("Bob", 22, "MIT")

现在,我们可以使用 . 运算符来访问 bob 对象的属性和方法。例如,我们可以使用 bob.name 来访问 bob 的姓名,或者我们可以使用 bob.study() 来让 bob 学习。

3. 多态

多态是 OOP 中的另一个重要概念。它允许我们使用相同的代码来操作不同类型的对象。

例如,我们可以创建一个 greet() 函数,它可以接受任何 Person 类的对象作为参数。这个函数将打印该对象的姓名和年龄。

def greet(person):
    print(f"Hello, my name is {person.name} and I am {person.age} years old.")

现在,我们可以使用 greet() 函数来打招呼任何 Person 类的对象。例如,我们可以使用 greet(alice) 来打招呼 alice 对象,或者我们可以使用 greet(bob) 来打招呼 bob 对象。

4. 封装

封装是 OOP 中的最后一个重要概念。它允许我们将数据和行为隐藏在对象中,从而保护它们不被外部代码访问。

在 Python 中,我们可以使用 private 关键字来将数据和行为隐藏在对象中。private 关键字将数据和行为标记为私有的,这意味着它们只能在对象内部访问。

例如,我们可以将 Person 类的 nameage 属性标记为私有的,如下所示:

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

    def greet(self):
        print(f"Hello, my name is {self.__name} and I am {self.__age} years old.")

现在,我们无法再使用 . 运算符来访问 nameage 属性。我们只能使用 greet() 方法来访问这些属性。

5. 结论

类和对象是 Python 编程中的重要概念。它们允许我们将数据和行为组织成对象,从而使代码更具可读性、可维护性和可重用性。继承、多态和封装是 OOP 中的其他三个重要概念。它们允许我们创建更灵活、更强大的代码。