欢迎访问宙启技术站
智能推送

Python中的面向对象函数:封装、继承、多态等常用函数讲解

发布时间:2023-06-22 16:56:23

Python是一门面向对象(Object-Oriented)的编程语言。面向对象编程思想是一种程序设计思想,它采用了面向对象的方法进行程序设计和编写。在Python中,面向对象编程是通过类和对象来实现的。Python中的面向对象函数包括封装、继承、多态等常用函数,这些函数对于面向对象编程至关重要。本文将详细讲解Python中的面向对象函数:封装、继承、多态等常用函数。

一、封装

封装是面向对象编程中的一种重要概念,它是将数据和操作数据的方法进行封装,以保证程序的安全性和可靠性。在Python中,封装是通过访问修饰符来实现的,访问修饰符分为public、protected、和private三种。其中,public表示公共访问,protected表示受保护的访问,private表示私有访问。Python中没有真正的私有访问,但是通过命名规则来模拟私有访问。

在Python中,定义类的时候可以使用如下访问修饰符:

1. public

public是Python类中默认的访问修饰符,没有特殊的标识符,可以直接访问类内部的属性和方法,也可以通过类的实例对象进行访问,如下所示:

class MyClass:

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def get_name(self):

        return self.name

    def get_age(self):

        return self.age

# 实例化对象,访问类的属性和方法

obj = MyClass("Tom", 18)

print(obj.name)

print(obj.get_name())

2. protected

protected访问修饰符在Python中是通过在属性或方法名前加单下划线“_”来实现的,表示只有类的子类和当前模块内部的代码可以访问。如下所示:

class MyClass:

    def __init__(self, name, age):

        self._name = name

        self._age = age

    def _get_name(self):

        return self._name

    def _get_age(self):

        return self._age

# 实例化对象,访问类的属性和方法

obj = MyClass("Tom", 18)

print(obj._name)

print(obj._get_name())

3. private

private访问修饰符在Python中是通过在属性或方法名前加双下划线“__”来实现的,表示只有类的内部代码可以访问。如下所示:

class MyClass:

    def __init__(self, name, age):

        self.__name = name

        self.__age = age

    def __get_name(self):

        return self.__name

    def __get_age(self):

        return self.__age

# 实例化对象,访问类的属性和方法

obj = MyClass("Tom", 18)

print(obj.__name) # 报错

print(obj.__get_name()) # 报错

二、继承

继承是面向对象编程中的又一个重要概念,它是指子类从父类继承该父类的属性和方法。在Python中,继承是通过在子类的类定义中添加父类的名称来实现的,如下所示:

class Parent:

    def __init__(self, name, age):

        self._name = name

        self._age = age

    def get_name(self):

        return self._name

    def get_age(self):

        return self._age

class Child(Parent):

    def __init__(self, name, age, sex):

        super().__init__(name, age)

        self._sex = sex

    def get_sex(self):

        return self._sex

# 实例化子类对象,访问父类属性和方法

c = Child("Tom", 18, "Male")

print(c.get_name())

print(c.get_age())

print(c.get_sex())

在上面的代码中,子类Child从父类Parent继承了父类的属性和方法。在子类中,我们可以通过super函数调用父类的init方法进行初始化。

三、多态

多态是面向对象编程中的又一个重要概念,它是指同一种行为、方法或运算在不同的对象中具有不同的实现方式。在Python中,多态是通过函数的重写和重载来实现的。

1. 函数的重写(Override)

函数的重写是指在子类中重写父类的方法,改变原有方法的行为。在Python中,函数的重写是通过在子类中重新定义与父类同名的方法来实现的。如下所示:

class Parent:

    def __init__(self, name, age):

        self._name = name

        self._age = age

    def get_name(self):

        return self._name

    def get_age(self):

        return self._age

class Child(Parent):

    def __init__(self, name, age, sex):

        super().__init__(name, age)

        self._sex = sex

    def get_sex(self):

        return self._sex

    def get_age(self):

        return self._age + 1

# 实例化子类对象,访问子类中重写的父类方法

c = Child("Tom", 18, "Male")

print(c.get_age()) # 输出:19

在上面的代码中,子类Child重写了父类Parent中的方法get_age,在子类中返回的是age+1的值。

2. 函数的重载(Override)

函数的重载是指在同一个类中定义多个同名的方法,但是这些方法的参数列表不同。在Python中,函数的重载是不存在的,但是可以通过使用可变参数来实现函数的重载的效果。如下所示:

class MyClass:

    def __init__(self, *args):

        self._args = args

    def get_args(self):

        if len(self._args) == 0:

            return "No Args"

        elif len(self._args) == 1:

            return self._args[0]

        elif len(self._args) == 2:

            return self._args[0] + self._args[1]

        else:

            return "Too Many Args"

# 实例化对象,访问函数的不同重载版本

obj = MyClass()

print(obj.get_args()) # 输出:No Args

obj = MyClass(10)

print(obj.get_args()) # 输出:10

obj = MyClass("Hello", "World")

print(obj.get_args()) # 输出:HelloWorld

obj = MyClass("Hello", "World", "Too", "Many", "Args")

print(obj.get_args()) # 输出:Too Many Args

在上面的代码中,函数get_args是被重载的,它根据参数列表的不同返回不同的结果。

总结

在Python中,面向对象编程是通过类和对象来实现的,其中类具有封装、继承、多态等常用函数。封装可以通过访问修饰符来实现;继承可以通过在子类中添加父类的名称来实现;多态可以通过函数的重载和重写来实现。对于Python中的面向对象函数,建议开发者仔细了解并灵活应用。