在 Python 中快速启动面向对象编程的 5 个示例
OOP 代表面向对象编程。这个概念是一种解决编程问题的风格,其中现实生活中对象的属性和行为被打包为代码中的单个实体。
这种编码风格能够以最少的问题进行模块化和扩展。
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]) 在第三行返回一个整数。打印识别数据类型并将其隐式转换为字符串并将其打印到控制台。
- 点赞
- 收藏
- 关注作者
评论(0)