在 Python 中快速启动面向对象编程的 5 个示例

举报
Tiamo_T 发表于 2021/10/05 09:41:48 2021/10/05
【摘要】 OOP 代表面向对象编程。这个概念是一种解决编程问题的风格,其中现实生活中对象的属性和行为被打包为代码中的单个实体。这种编码风格能够以最少的问题进行模块化和扩展。Python 是一种动态类型的高级解释型编程语言。Python 支持多种 OOP 功能,包括:类和对象封装继承多态性1. Python 中的类类是现实生活中实体的蓝图。在 Python 中,它是使用 class 关键字创建的,如以下...

OOP 代表面向对象编程。这个概念是一种解决编程问题的风格,其中现实生活中对象的属性和行为被打包为代码中的单个实体。

python

这种编码风格能够以最少的问题进行模块化和扩展。

Python 是一种动态类型的高级解释型编程语言。Python 支持多种 OOP 功能,包括:

  • 类和对象
  • 封装
  • 继承
  • 多态性


1. Python 中的类

类是现实生活中实体的蓝图。在 Python 中,它是使用 class 关键字创建的,如以下代码片段所示。

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

在上面:

  • class – 这是一个名为 Person 的类。
  • 构造函数具有默认名称 __init__。它们是在创建类的对象时隐式调用的函数。
  • 包括构造函数在内的所有实例方法的第一个参数都是 self。
  • self 指的是在调用方法时被引用的实例。
  • name 和 age 是实例变量。

2. Python 中的对象

一旦定义了 Person 类,您就可以使用它通过传递值来创建实例,如下所示。

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

if __name__ == "__main__":
    p = Person("ranjeeta", 23)
    print(p.name)

在上面:

  • p - 是我们基于 Person 类创建的对象的名称
  • 即使类有三个参数(self、name、age),我们在创建对象时仍然只传递name和age,因为我们不需要在这里引用self。这是隐含的。
  • 创建对象后,您可以使用点来引用对象的属性。例如, p.name 指的是该特定对象的名称属性

3. Python 中的继承

顾名思义,这个概念是关于从现有实体继承属性。这增加了代码的可重用性。单级、多级和多级继承是 Python 支持的众多类型中的少数。

下面的例子展示了如何在 python 中使用继承:

class Person:
  def __init__(self):
    pass

# Single level inheritance
class Employee(Person):
  def __init__(self):
    pass

# Multi-level inheritance
class Manager(Employee):
  def __init__(self):
    pass

# Multiple Inheritance
class Enterprenaur(Person, Employee):
  def __init__(self):
    pass

在多重继承中,类在括号内从左到右继承,这取决于 Python 的方法解析顺序 (MRO) 算法。

4. Python 中的封装

这是包装数据的概念,以便外部世界只能访问公开的属性。可以隐藏某些属性以减少漏洞。这是数据隐藏的一种实现。例如,您想从在线网站购买一条裤子。您需要的数据是其成本和可用性。存在的项目数量及其位置是您不关心的信息。因此它是隐藏的。

在 Python 中,这是通过创建私有、受保护和公共实例变量和方法来实现的。

私有属性以双下划线 (__) 开头,而受保护属性以单下划线 (_) 开头。默认情况下,所有其他变量和方法都是公共的。

私有属性只能从类内部访问,不能用于子类(如果继承)。受保护的属性可从类内部访问,但也可用于子类。公共财产的所有这些限制都被取消了。

以下代码片段是此概念的示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def _protected_method(self):
        print("protected method")
    def __private_method(self):
        print("privated method")

if __name__ == "__main__":
    p = Person("mohan", 23)
    p._protected_method() # shows a warning
    p.__private_method()  # throws Attribute error saying no such method exists

5. Python 中的多态性

这是一个概念,其中一个函数可以采用多种形式,具体取决于提供给函数的参数数量或参数类型。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def show_salary(self):
        print("Salary is unknown")

class Employee(Person):
    def __init__(self, name, age, salary):
        super().__init__(name, age)
        self.salary = salary
    def show_salary(self):
        print("Salary is", self.salary)

if __name__ == "__main__":
    p = Person("y", 23)
    x = Employee("x", 20, 100000)
    p.show_salary() # Salary is unknown
    x.show_salary() # Salary is 100000

在上面的例子中,super关键字用于调用父类的方法。这两个类都有 show_salary 方法。根据调用此函数的对象类型,输出会有所不同。

Python 也有内置的多态函数。最简单的例子之一是 python 中的打印函数。

print("Hello there", end=" ")
print("I am Tiamo")
print(len([1, 2, 3, 4, 5]))

上述代码的输出将是:

Hello there I am Tiamo
5

在上面的代码片段中:

  • end 关键字参数改变了打印功能的功能。因此,它没有以结束行结束“Hello There”。
  • len([1, 2, 3, 4, 5]) 在第三行返回一个整数。打印识别数据类型并将其隐式转换为字符串并将其打印到控制台。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。