Python全栈之面向对象基础

  • Post category:Python

Python全栈之面向对象基础

什么是面向对象编程?

面向对象编程(Object-oriented programming,简称OOP)是一种程序设计思想。面向对象的程序设计语言支持类和对象的概念,这种编程思想基于类与对象的概念和类与对象之间的关系。用OOP的方法组织代码,可以将程序设计进行更高层次的抽象,达到更好的代码重用,以及更好的可读性,可维护性。

面向对象编程的特点

  • 封装:将数据和方法封装在一起以保证数据的安全性和方法的独立性
  • 继承:子类继承父类,并且子类可以新增或者覆盖原有父类的方法和属性,提高复用性
  • 多态:同一种行为表现出不同的结果。

如何定义类与对象

定义一个类的语法如下:

class MyClass:
    pass  # pass代表空语句

一旦定义了类,我们就可以创建类的对象(又叫实例)。Python使用构造函数 __init__ 来设置一个类的属性(数据成员)

class MyClass:
    def __init__(self, name):
        self.name = name
john = MyClass('John')
print(john.name)  # 输出 "John"

在上面的例子中,类 MyClass 有一个属性 name,构造函数 __init__ 使用 self.name 来初始化这个属性,表示这是实例 john 的一个数据成员。最后使用 print(john.name) 来输出属性值。

继承

类可以被其他类继承,继承的类被称为子类,新建的类称为父类。子类继承了父类的属性和方法,在此基础之上可以新增或者覆盖原有父类的方法和属性。

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

    def say_hello(self):
        print('Hello,', self.name)


class Child(Parent):
    def say_hello(self):
        print('Hi,', self.name)

janet = Child('Janet')
janet.say_hello()  # 输出 "Hi, Janet"

在上面的例子中,class Child(Parent) 表示 Child 类继承了 Parent 类的所有属性和方法,并且在其基础之上新增了 say_hello 方法。当我们调用子类的 say_hello 方法时,程序会优先调用子类的方法,如果没有找到,则回溯到父类查找其方法。

多态

多态是指同一种行为表现出不同的结果。在Python中有很多方式达成多态。下面通过多态性实现两个著名的算数运算。

class Addition:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def operation(self):
        return self.a + self.b

class Multiplication:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def operation(self):
        return self.a * self.b

def calculate(obj):
    return obj.operation()


add = Addition(10, 20)
multiply = Multiplication(10, 20)
print(calculate(add))  # Prints: 30
print(calculate(multiply))  # Prints: 200

在上面的例子中,我们定义了两个对象 addmultiply 分别属于两个类 AdditionMultiplication。类 AdditionMultiplication 都有一个共同的函数 operation,我们使用这个函数来展示多态性,这两个对象调用 calculate() 函数,以便能够让操作进行混合及匹配。最后输出的结果分别为他们对应的运算结果。

以上就是本文对于Python全栈之面向对象编程基础的攻略介绍,希望能够帮助大家更好地理解面向对象编程思想。