您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python中的对象与实例

python中的对象与实例

在Python中,类定义(即类的主体)称为对象

实际上,这在Python中仍称为类。这就是为什么要这样定义它:

class Foo(object):
    pass

使用class关键字是因为结果仍称为类。

object括号中的单词表示Foo源自名为的类object。请勿混淆-这里可以使用任何现有的类;实际上不止一个

您通常从中得出类的原因object是历史性的意外,但可能值得详细说明。Python的原始对象实现将用户定义的类和内置类型视为略有不同的事物。然后,语言的设计师决定统一这两个概念。因此,从object(或从的后代object)派生的类的行为与不是 从派生的object类(称为新样式的类)的行为略有不同。另一方面,老式类的定义如下:

class Foo:
    pass

class Bar(Foo):
    pass

请注意,它们不会继承object或继承自object。这使它们成为旧式的类。

使用Python 2.x时,您的类几乎应该始终继承自object,因为使用几种小型但重要的方式可以更好地使用新型对象。

为了使事情更加混乱,在Python 3.0和更高版本中,没有老式的类,因此您不必object显式派生。换句话说,以上 所有 类都是Python 3.x中的新型类。

现在,回到眼前的事情。类 对象,因为一切都是Python中的对象。列表,字典,整数,字符串,元组…所有这些都是对象,Python程序的构造块也是如此:模块,函数和类。您可以使用class关键字创建一个类,然后将其传递给函数,对其进行修改等。(为完整起见,您还可以使用该type()函数创建一个类。)

类是用于构建对象的模板,这些对象称为 实例。 这部分您已经知道。您可以实例化类似于调用函数的对象,并传入初始值和其他参数:

mylist = list("abc")   # constructs ["a", "b", "c"]

在幕后,这将创建一个实例,然后调用新实例的__init__() 方法对其进行初始化。由于所有内容都是Python中的对象,因此类的实例也是对象。

您可能想知道的最后一件事是,就像类是用于构建对象的模板一样,也可能有用于构建类的模板。这些称为 元类 调用了基元类type(即,普通的新式类是的实例type)。

(是的,这与type我之前提到的可用于创建类的相同,而可以将其称为创建类的原因是它是一个元类。)

要创建自己的元类,可以type像这样派生它:

class myMeta(type):
    pass

元类一个相当高级的Python主题,因此我不会讨论您可能将它们用于什么或如何使用它们,但是它们应明确说明Python将“一切皆对象”的概念带到了多远。

python 2022/1/1 18:45:37 有313人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶