28 Python面向对象编程之类与对象

在上一篇中,我们讨论了“错误和异常处理之自定义异常”,了解了如何创建和处理自己的异常类型。在本篇中,我们将深入探讨对象的概念,它们是理解面向对象编程(OOP)的基础。

面向对象编程是一种程序设计范式,它使用“类”和“对象”来组织代码,使得代码更易于管理和扩展。以下是我们将要探讨的几个重要概念:

  • :类是对象的蓝图或模板,定义了对象的属性和行为。
  • 对象:对象是类的实例,每个对象都有自己的特定状态。

一、什么是类?

在 Python 中,使用 class 关键字来定义一个类。类可以包含属性(变量)和方法(函数),下面是一个简单的类定义示例:

1
2
3
4
5
6
7
8
9
10
11
12
class Dog:
# 类属性
species = "Canis familiaris"

def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age

# 方法
def bark(self):
return "Woof! My name is {}".format(self.name)

在这个例子中:

  • Dog 是一个类,定义了一种动物。
  • species 是类属性,所有 Dog 实例共享这个属性。
  • __init__ 方法是一个初始化方法,在创建对象时被调用,用于设置 nameage 实例属性。
  • bark 方法是一个实例方法,返回狗叫的字符串。

二、什么是对象?

对象是类的实例。我们可以通过调用类并传递参数来创建对象:

1
2
3
4
5
6
7
# 创建对象
dog1 = Dog("Buddy", 3)
dog2 = Dog("Max", 5)

# 调用对象的方法
print(dog1.bark()) # 输出: Woof! My name is Buddy
print(dog2.bark()) # 输出: Woof! My name is Max

在这个例子中,我们创建了两个 Dog 对象:dog1dog2。每个对象都有自己的 nameage 属性。

三、类的继承

继承是面向对象编程的重要特性,可以让我们通过创建新类来扩展现有类的功能。使用 class 关键字,跟随父类名称来定义子类。下面是一个示例:

1
2
3
class Labrador(Dog):
def fetch(self, item):
return "{} fetches the {}".format(self.name, item)

在这个例子中,Labrador 类继承自 Dog 类,添加了一个新的方法 fetch

1
2
3
4
5
6
# 创建一个Labrador对象
lab = Labrador("Charlie", 4)

# 调用父类和子类的方法
print(lab.bark()) # 输出: Woof! My name is Charlie
print(lab.fetch("ball")) # 输出: Charlie fetches the ball

四、类与对象的封装

封装是将数据和操作这些数据的方法绑定在一起的特性。在Python中,属性和方法的访问级别可以通过前缀 _(单下划线)或 __(双下划线)进行控制。

1
2
3
4
5
6
class Cat:
def __init__(self, name):
self.__name = name # 私有属性

def get_name(self):
return self.__name # 通过方法访问私有属性

在这个例子中,__name 是一个私有属性,直接访问会引发错误;必须通过方法 get_name 来获取属性值。

五、总结

在本篇中,我们介绍了对象的基本概念以及如何在 Python 中实现它们。通过实例化类,我们创建了对象,并通过方法来操作对象的属性。同时,我们也探讨了继承与封装的基本概念,为后续的多态相关内容打下基础。

在下一篇中,我们将继续深入探索面向对象编程中的“继承与多态”,以了解如何在设计中更好地复用代码。希望本文能帮助您更好地理解 Python 的面向对象编程!

28 Python面向对象编程之类与对象

https://zglg.work/python-zero/28/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论