龙空技术网

Python 类和对象的基础知识,一文掌握

自由坦荡的湖泊AI 31

前言:

目前各位老铁们对“js中object对象的常用方法”都比较关怀,咱们都需要分析一些“js中object对象的常用方法”的相关内容。那么小编在网摘上网罗了一些关于“js中object对象的常用方法””的相关知识,希望大家能喜欢,我们快快来学习一下吧!

在 Python 编程的世界中,经常与各种内置对象交互,而字符串是其中最基本的对象之一。考虑简单的代码行:s = “I am a string”。当使用 print(type(s)) 查询 s 的类型时,Python 会将 s 标识为 str 类的实例,该类封装了字符串的概念。

String 对象

字符串是 Python 对象的一个示例。

s = "I am a string"print(type(s))

Python 表示 s 的类型是类 str (它是一个字符串)。添加以下代码行并再次运行该程序。

print(dir(str))

dir 是一个内置函数,用于显示链接到类的所有属性和方法。输出最初可能看起来势不可挡,但某些元素(如 upperlower)可能是可识别的。虽然在以后的课程中将更详细地探讨属性和方法,但重要的是要认识到字符串不仅仅是一个字符序列。作为一个类,字符串是收集和更改数据的有效工具。

# In Python, strings are objects and "s" is an instance of the str class.s = "I am a string"# print(dir(str))# The __add__ method is used to concatenate strings. # Here it's used to add an exclamation mark to the string s.print(s.__add__("!"))  # Output: I am a string!# The __sizeof__ method returns the size of the object in memory, in bytes.print(s.__sizeof__())  # This output may vary depending on the system.# The startswith method checks if the string starts with the specified substring.print(s.startswith("I"))  # Output: True because s starts with "I".

词汇

术语 “类” 和 “对象” 似乎可以互换使用。虽然类和对象之间有一些相似之处,但也有一些关键的差异需要注意。此外,使用对象涉及一组不同的专业术语。

类表示数据的结构化组合和可以处理这些数据的函数。编程本质上是一种抽象活动,它从类中受益匪浅,类提供了一个概念模型来帮助用户更具体地思考数据。作为蓝图,类不仅向 Python 概述了要收集的数据,还概述了如何更改这些数据。

对象

对象是根据类提供的蓝图创建的。例如,在前面提到的代码中,变量 s 是字符串对象的实例,而不是类本身。字符串类通知 Python s 拥有 __add____sizeof__startswith 等方法。因此,当程序员打算利用类中定义的功能时,他们会实例化一个对象。

实例

程序员在讨论对象时使用的另一个常用术语是将对象描述为特定类的 “实例”。这意味着该对象是该类的特定实现,它体现了该类中定义的所有特征和行为。例如,我们上一个示例中的变量 s 是 string 类的实例。这表明 s 不仅包含根据字符串类构建的数据,而且还继承了字符串类定义的所有方法和属性,从而允许它在程序中表现为字符串。

实例

实例化是根据类的 Blueprint 创建对象的过程。短语 “define a variable” 的意思是创建一个变量。为变量指定名称和值。定义后,可以使用该变量。对于对象,您可以使用短语 “instantiate an object”。这意味着要创建一个对象,给它一个名字,存储任何数据,并定义对象可以执行的操作。

用户定义的对象

定义对象 假设您收集有关角色的信息。创建类是使这些数据井井有条的好方法。class 关键字用于定义类。现在,使用 pass 作为类的主体。声明一个类本身不会做任何事情

class Actor:    passprint(Actor)
命名类

Python 中命名类的约定是使用大写字母。小写字母不会导致错误消息,但不会被视为 “正确”。如果类的名称包含多个单词,请不要使用 _ 分隔单词,例如变量和函数名称。相反,所有单词都被推到一起,每个单词的第一个字母都使用大写字母。这称为 camel case。

类只是蓝图。要使用类,需要实例化一个对象。下面是一个表示演员 John 的对象。

class Actor:   passjohn= Actor()print(type(helen)

所以现在有 John,它是 Actor 类的一个实例。

添加属性

拥有类的目的是收集信息并定义可以修改该数据的操作。例如,Actor 类应包含演员姓名、著名电影、他们获得的奖项等详细信息。这些与类关联的信息称为属性。使用点表示法访问属性,该表示法遵循 object_name.attribute 格式。您可以使用 assignment 运算符添加属性,如下所示: object_name.attribute = attribute_value 。Object 属性可以像任何其他变量一样使用。

class Actor:    ''' Define the actor class '''    passjohn = Actor()john.first_name = "John"john.last_name = "Smith"print(john.first_name, john.last_name) helen = Actor()helen.first_name = "Helen"helen.last_name = "Mirren"helen.birthday = "July 26"helen.total_films = 80helen.oscar_nominations = 4helen.oscar_wins = 1print(helen.first_name, helen.last_name)

之前定义的 Actor 类。通过创建此类的实例(例如,对于演员 John 和 Helen),可以为每个演员分配属性。例如,我们可以将 John 的名字和姓氏分别指定为 “John” 和 “Smith”,然后打印这些值。同样,我们可以定义 Helen 的详细信息,包括她的名字、姓氏、生日、电影总数、奥斯卡提名和奥斯卡获奖次数,还可以打印她的名字和姓氏。但是,为每个 actor 逐个添加每个属性可能会导致大量重复代码。这种方法不仅耗时,而且效率低下,尤其是当属性数量增加或需要创建多个实例时。为了解决这个问题,在 Actor 类中使用构造函数可以帮助以更简洁、更有条理的方式简化初始化具有各自属性的对象的过程。

构造函数

类 Actor 除了创建一个类之外什么都不做。它不会创建任何属性;用户必须执行此操作。类应该是一个蓝图。它应该为用户布置所有属性。当您使用构造函数时,类可以执行此操作。

构造函数是类中的一种特殊方法。它的主要作用是初始化与对象关联的所有属性。这些属性称为实例变量。在 Python 中,构造函数方法编写为 __init__init 之前和之后的双下划线是必需的。构造函数还必须包含 self 作为参数。构造函数的语法类似于函数的语法,它需要缩进四个空格以指示它是类的一部分。使用 self.attribute_name 访问属性。创建 Actor 类的实例(如 helen)时,将自动调用构造函数,从而设置对象的初始状态。

双下划线是怎么回事?在 Python 中,带有双下划线的方法常见于对象中,称为“dunder”方法。这些方法是隐式的,这意味着它们在幕后运行以响应显式操作。例如,您永远不需要显式调用 helen.__init__。当创建类的实例时,Python 会自动调用 __init__ 方法来初始化对象。这种隐式机制通过自动处理日常任务来帮助简化编码过程。

class Actor:    """Define the actor class"""    def __init__(self, first_name, last_name, birthday, total_films, oscar_nominations, oscar_wins):        self.first_name = first_name        self.last_name = last_name        self.birthday = birthday        self.total_films = total_films        self.oscar_nominations = oscar_nominations        self.oscar_wins = oscar_winsjohn = Actor("John", "Smith", "June 20", 80, 4, 1)tom = Actor("Tom", "Hanks", "July 9", 76, 5, 2)print(john.first_name, john.last_name)print(tom.first_name, tom.last_name)

标签: #js中object对象的常用方法