小白教程

 找回密码
 立即注册
查看: 7700|回复: 0

[好文转载] Python 中的类和对象

[复制链接]

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2021-5-1 03:16:44 | 显示全部楼层 |阅读模式
Python 中的类和对象是语言的关键部分。如果不理解课程和对象,就无法正确地学习 Python。在这一章中,您将学习:
  • 如何在蟒蛇一切都是一个对象
  • 如何在Python中创建自己的类和对象
  • 什么是继承
当您只是创建小脚本时,您很可能不需要创建自己的类。但是,一旦您开始创建更大的应用程序,对象和类允许您自然地组织您的代码。
在深入了解所有细节之前,我们将先看看引擎盖下。我这样做是因为我相信这会让你更好地了解这些概念。不要让此页面的长度使您灰心丧气。在彻底阅读并尝试实例之后,您应该对 Python 中的类和对象有很好的了解。如果不是...在论坛上留言,告诉我你被困在哪里了。我很乐意帮你度过难关。
好的:让我们潜入!您可能知道内置功能。它只是返回你给它的对象的长度。但是,比如说,数字五的长度是多少呢?让我们问问蟒蛇:len()
[size=1em]
[size=1em][size=1em]>>> len(5)
[size=1em]Traceback (most recent call last):
[size=1em]  File "<stdin>", line 1, in <module>
[size=1em]TypeError: object of type 'int' has no len()




我喜欢错误,因为它们说明了Python在内部的工作原理。在这种情况下,Python告诉我们,5是一个对象,它没有。在Python,一切都是一个对象。刺痛,嘘声,数字,甚至功能都是对象。我们可以使用内置功能检查 REPL 中的对象。当我们尝试数字 5 时,它会显示一大堆属于任何数字对象的函数:len()dir()dir
[size=1em]
[size=1em][size=1em]>>> dir(5)
[size=1em]['__abs__', '__add__',
[size=1em]'__and__', '__bool__',
[size=1em]'__ceil__', '__class__',
[size=1em]...
[size=1em]'__str__', '__sub__',
[size=1em] '__subclasshook__', '__truediv__',
[size=1em] '__trunc__', '__xor__',
[size=1em]'bit_length', 'conjugate',
[size=1em]'denominator', 'from_bytes',
[size=1em] 'imag', 'numerator',
[size=1em]'real', 'to_bytes']




为了清楚起见,我稍微截断了一下名单。
列表从这些奇怪的命名功能开始,其中包含下划线,如。这些被称为魔法方法,或凹凸不已经(双下划线的缩求)方法。如果你仔细观察,你会发现没有对类型对象的dunder方法。这就是 Python 的功能如何知道数字没有长度。所有做的,就是调用你提供的对象上的方法。这也是为什么 Python 抱怨 "类型 'int' 的对象没有伦 ()" 的原因。__add____len__intlen()len()__len__()
什么是蟒蛇方法?
我在这里随便介绍了单词方法。让我更正式地定义它:
方法当一个函数是对象的一部分时,我们称之为一种方法。
所以,如果一个字符串确实有一个长度,它必须有一个len方法,对不对?让我们来看看!
[size=1em]
[size=1em][size=1em]>>> dir("test")
[size=1em]['__add__', '__class__',
[size=1em]'__contains__', '__delattr__',
[size=1em]'__dir__', '__doc__',
[size=1em]'__eq__', '__format__',
[size=1em]'__ge__', '__getattribute__',
[size=1em]'__getitem__', '__getnewargs__',
[size=1em]'__gt__', '__hash__', '__init__',
[size=1em]'__init_subclass__', '__iter__',
[size=1em]'__le__', '__len__', '__lt__',
[size=1em]'__mod__', '__mul__', '__ne__',
[size=1em]'__new__', '__reduce__',
[size=1em]'__reduce_ex__', '__repr__',
[size=1em]'__rmod__', '__rmul__',
[size=1em]'__setattr__', '__sizeof__',
[size=1em]'__str__', '__subclasshook__',
[size=1em]'capitalize', 'casefold', 'center',
[size=1em]'count', 'encode', 'endswith',
[size=1em]'expandtabs', 'find', 'format',
[size=1em]'format_map', 'index', 'isalnum',
[size=1em]'isalpha', 'isascii', 'isdecimal',
[size=1em]'isdigit', 'isidentifier', 'islower',
[size=1em]'isnumeric', 'isprintable', 'isspace',
[size=1em]'istitle', 'isupper', 'join', 'ljust',
[size=1em]'lower', 'lstrip', 'maketrans',
[size=1em]'partition', 'replace', 'rfind',
[size=1em]'rindex', 'rjust', 'rpartition',
[size=1em]'rsplit', 'rstrip', 'split',
[size=1em]'splitlines', 'startswith', 'strip',
[size=1em]'swapcase', 'title', 'translate',
[size=1em]'upper', 'zfill']




是的,就在那儿由于这是一种方法,我们也可以称之为:
[size=1em]
[size=1em][size=1em]>>> "test".__len__()
[size=1em]4




这相当于但不太优雅,所以不要这样做。只是为了说明这些东西是如何工作的。len("test")
还有一个列表,其他不那么神奇的方法,揭示给我们。随意尝试一些,如:dir()islower
[size=1em]
[size=1em][size=1em]>>> "test".islower()
[size=1em]True




这种方法检查,如果整个字符串是小写,这是,所以Python返回布尔。其中一些方法需要一个或多个参数,如替换:True
[size=1em]
[size=1em][size=1em]>>> 'abcd'.replace('a', 'b')
[size=1em]'bbcd'




它将"a"的所有事件替换为"b"。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 15:30 , Processed in 0.030029 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表