Python 中的类和对象
Python 中的类和对象是语言的关键部分。如果不理解课程和对象,就无法正确地学习 Python。在这一章中,您将学习:[*]如何在蟒蛇一切都是一个对象
[*]如何在Python中创建自己的类和对象
[*]什么是继承
当您只是创建小脚本时,您很可能不需要创建自己的类。但是,一旦您开始创建更大的应用程序,对象和类允许您自然地组织您的代码。在深入了解所有细节之前,我们将先看看引擎盖下。我这样做是因为我相信这会让你更好地了解这些概念。不要让此页面的长度使您灰心丧气。在彻底阅读并尝试实例之后,您应该对 Python 中的类和对象有很好的了解。如果不是...在论坛上留言,告诉我你被困在哪里了。我很乐意帮你度过难关。好的:让我们潜入!您可能知道内置功能。它只是返回你给它的对象的长度。但是,比如说,数字五的长度是多少呢?让我们问问蟒蛇:len()
>>> len(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
我喜欢错误,因为它们说明了Python在内部的工作原理。在这种情况下,Python告诉我们,5是一个对象,它没有。在Python,一切都是一个对象。刺痛,嘘声,数字,甚至功能都是对象。我们可以使用内置功能检查 REPL 中的对象。当我们尝试数字 5 时,它会显示一大堆属于任何数字对象的函数:len()dir()dir
>>> dir(5)
['__abs__', '__add__',
'__and__', '__bool__',
'__ceil__', '__class__',
...
'__str__', '__sub__',
'__subclasshook__', '__truediv__',
'__trunc__', '__xor__',
'bit_length', 'conjugate',
'denominator', 'from_bytes',
'imag', 'numerator',
'real', 'to_bytes']
为了清楚起见,我稍微截断了一下名单。列表从这些奇怪的命名功能开始,其中包含下划线,如。这些被称为魔法方法,或凹凸不已经(双下划线的缩求)方法。如果你仔细观察,你会发现没有对类型对象的dunder方法。这就是 Python 的功能如何知道数字没有长度。所有做的,就是调用你提供的对象上的方法。这也是为什么 Python 抱怨 "类型 'int' 的对象没有伦 ()" 的原因。__add____len__intlen()len()__len__()什么是蟒蛇方法?我在这里随便介绍了单词方法。让我更正式地定义它:方法当一个函数是对象的一部分时,我们称之为一种方法。所以,如果一个字符串确实有一个长度,它必须有一个len方法,对不对?让我们来看看!
>>> dir("test")
['__add__', '__class__',
'__contains__', '__delattr__',
'__dir__', '__doc__',
'__eq__', '__format__',
'__ge__', '__getattribute__',
'__getitem__', '__getnewargs__',
'__gt__', '__hash__', '__init__',
'__init_subclass__', '__iter__',
'__le__', '__len__', '__lt__',
'__mod__', '__mul__', '__ne__',
'__new__', '__reduce__',
'__reduce_ex__', '__repr__',
'__rmod__', '__rmul__',
'__setattr__', '__sizeof__',
'__str__', '__subclasshook__',
'capitalize', 'casefold', 'center',
'count', 'encode', 'endswith',
'expandtabs', 'find', 'format',
'format_map', 'index', 'isalnum',
'isalpha', 'isascii', 'isdecimal',
'isdigit', 'isidentifier', 'islower',
'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust',
'lower', 'lstrip', 'maketrans',
'partition', 'replace', 'rfind',
'rindex', 'rjust', 'rpartition',
'rsplit', 'rstrip', 'split',
'splitlines', 'startswith', 'strip',
'swapcase', 'title', 'translate',
'upper', 'zfill']
是的,就在那儿由于这是一种方法,我们也可以称之为:
>>> "test".__len__()
4
这相当于但不太优雅,所以不要这样做。只是为了说明这些东西是如何工作的。len("test")还有一个列表,其他不那么神奇的方法,揭示给我们。随意尝试一些,如:dir()islower
>>> "test".islower()
True
这种方法检查,如果整个字符串是小写,这是,所以Python返回布尔。其中一些方法需要一个或多个参数,如替换:True
>>> 'abcd'.replace('a', 'b')
'bbcd'
它将"a"的所有事件替换为"b"。
页:
[1]