如何将字符串转换为 Python 类对象?

2025年1月5日 | 阅读6分钟

类被定义为实例变量的存储,类是用于指定对象类型的。类可以用于创建所需类型的对象实例。对象是一个具有某些属性(也称为数据成员)和行为(也称为成员函数)的已识别实体。一组具有相似特征和行为的对象是同一类的实例。类是用户定义的原型,借助类可以创建对象。通过创建新类来创建一种新类型的对象,该新类允许创建该类型对象的实例。每个类都可以附加属性以维护其状态。考虑一个例子:您想跟踪数量可以包含不同属性(如品种和年龄)的狗。如果我们使用列表来跟踪狗的数量,那么第一个元素可能是狗的品种,第二个元素可能是年龄。但是如果有 100 只不同的狗呢?那么我们怎么知道哪个元素应该是什么呢?您还想为这些狗添加哪些其他属性?这缺乏组织,这正是对类的需求。

定义类的语法

class 是 Python 中用于定义类的关键字。

定义对象的语法

类可以称为用户定义的数据结构,它包含自己的数据成员和成员函数,可以通过创建实例来访问和使用。

Python 类的一些要点

  • 类通过 class 关键字声明。
  • 属于类的变量称为属性。
  • 属性始终是公共的,可以通过点 (.) 访问。

在 Python 中创建类

代码

类是使用 class 关键字创建的,类名是 dog。

Python 类的对象

对象是类的实例。类就像一个蓝图,而对象是该类的实例,是带有原始值的类的副本。

对象包含

  • 状态:对象的属性,也显示对象的属性。
  • 行为:对象的行为,也显示对象对其他对象的响应。
  • 标识:它为对象提供一个唯一的名称,并允许一个对象与其他对象交互。

声明类对象(也称为实例化类)

当在类中创建对象时,该类称为已实例化。所有实例都共享类的属性和行为。但是,属性的值彼此不同。单个类可能包含许多实例。

Python 类和对象的示例

要在 Python 中创建对象,我们首先必须创建一个类,然后实例化一个类以创建我们创建的新类的实例。这个过程称为对象实例化。

代码

输出

mammal
I'm a mammal
I'm a dog

说明

在 Dog 类中,我们创建了一个对象,它基本上是一只名叫 bull_dog 的狗。该类只有两个类属性,告诉我们 bull_dog 是一只狗,并且是哺乳动物。我们有两个类变量,attr1 和 attr2。一个名为 fun() 的方法被创建,它返回字符串“I'm a, {attr1}”和“I'm a, {attr2}”。创建了 dog 类的对象,并打印了对象的 attr1。最后,调用了 fun() 函数。

Self 参数

方法调用为 my object.method(arg1, arg2),Python 会自动将其转换为 MyClass.method(myobject, arg1, arg2)。

代码

输出

Hello, my name is John, and I work in Dev.

init 函数中的 self 参数不是调用自身,而是可以使用任何其他名称。

Python 中的字符串

它是字符序列。如果您想在 Python 中输入文本,它将存储为字符串。您可以在 Python 中这样使用字符串:

  • 使用单引号:您可以使用单引号编写字符串,例如:'javatpoint'。
  • 使用双引号:您也可以使用双引号编写字符串,例如“javatpoint”。
  • 使用三引号(''' '''):使用三引号编写字符串允许您在 Python 中编写多行。

我们可以在字符串上使用加法和乘法等运算。两个字符串的加法称为连接。例如:“Python ” + “Programming” 输出为 Python Programming,而 'Python'*2 输出为 PythonPython。Python 字符串由 str 类表示。可以对字符串执行的操作包括连接、切片和重复。

代码

输出

Hello, welcome to the world of Python programming
<class 'str'>
Python Programming

说明

在上面的代码中,输入了一个值为 Hello, welcome to the world of Python programming 的字符串(用单引号括起来),然后打印了该字符串,也打印了字符串的类型,即 class string。在最后一个 print 语句中,连接了字符串。

让我们看看如何将字符串转换为 Python 对象

字符串可以借助多种方法转换为 Python 对象,具体取决于应创建的对象类型。以下是几种常见的常用方法:

1. 'eval()' 函数: eval() 方法用于查找字符串中的表达式,并返回结果。需要注意的是,当使用 eval 函数时,它可以执行任意代码,如果字符串来自不可信的来源,可能会存在安全风险。

代码

输出

7

说明

在上面的代码中,输入表达式为 '3 + 4',当将其传递给 eval 函数时,结果作为两个数字的和输出为 7。

2. 'ast.literal_eval()': 此函数用于评估包含字面量(字符串、数字、元组、列表、字典、布尔值和 None)的表达式,而无需运行任何代码。

代码

输出

[1,2,3]

说明

在上面的代码中,导入了 ast 模块,输入了列表的字符串,并使用 ast.literal_eval 函数将字符串评估为列表。

3. 'json.load()': 此函数用于表示 JSON 对象,json.loads() 函数用于将其解析为 Python 对象。

代码

输出

{'name': 'John', 'age': 30}

说明

在上面的代码中,导入了 json 模块,并输入了一个 JSON 对象格式的字符串,使用 json.loads 方法得到结果为一个 JSON 对象。

4. 自定义解析: 如果字符串需要遵循特定格式,并且上述方法都不符合要求,则可以为字符串编写自定义解析以将其转换为对象。