Python 3.x python中Self关键字的用法?详细的解释是可能的,就像你';你在解释一个孩子

Python 3.x python中Self关键字的用法?详细的解释是可能的,就像你';你在解释一个孩子,python-3.x,class,oop,object,self,Python 3.x,Class,Oop,Object,Self,我知道python中的self关键字是对特定类实例的引用,但是如何在同一个类中创建对象呢?有人能给我详细解释一下这个概念吗?我认为首先你应该知道类、对象和实例之间的区别 该类基本上是实体的代码定义 一个对象或实例,通常意味着同样的事情:一个运行中唯一的特定实体加载到内存中 我个人对两者进行了区分,但这可能只是我的观点: 当我从功能上阅读代码时,我在某个阶段使用object,我想说一些类似的话,这是这个方法返回的对象类型 当引用内存中运行的实际对象时,我使用instance === 现在在py

我知道python中的self关键字是对特定类实例的引用,但是如何在同一个类中创建对象呢?有人能给我详细解释一下这个概念吗?

我认为首先你应该知道类、对象和实例之间的区别

该类基本上是实体的代码定义

一个对象或实例,通常意味着同样的事情:一个运行中唯一的特定实体加载到内存中

我个人对两者进行了区分,但这可能只是我的观点:

  • 当我从功能上阅读代码时,我在某个阶段使用
    object
    ,我想说一些类似
    的话,这是这个方法返回的对象类型
  • 当引用内存中运行的实际对象时,我使用
    instance
===

现在在python类中,任何成员都可以定义为对象,例如:

类MyClass(对象):
定义初始化(自):
self.some_member=MyOtherClass()
请注意,类本身继承自
对象
,后者是基类(或所有python类的母类)

[1]中的
:对象??
初始化签名:对象()
文档字符串:
类层次结构的基类。
调用时,它不接受任何参数,并返回一个新的无特征值
没有实例属性且无法为其提供任何属性的实例。
类型:类型
子类:类型、weakref、weakcallableproxy、weakproxy、int、bytearray、字节、列表、非类型、NotImplementedType、。。。
===

如果您的意思是“如何将同一类的实例添加为该类的成员?”,则可以使用以下方法:

类MyClass(对象):
定义初始化(自):
self.other_实例=无
def set_实例(自身,实例):
如果不是isinstance(实例,MyClass):
raise TypeError(“错误的实例类型!”)
self.other_instance=实例
a=MyClass()
b=MyClass()
a、 set_实例(b)
在这里,我还将与大家分享错误的方法:

类MyClass(对象):
定义初始化(自):
self.other_实例=MyClass()
a=MyClass()
此代码将导致
递归错误:超过最大递归深度
。这是因为如果你仔细想想,每个类实例将尝试创建一个新实例,它将尝试创建一个新实例,它将尝试。。。等等

====

这可能是另一种方法,但我不会建议这样做,除非是针对非常具体和特殊的情况(可能与链接对象有关,但肯定有更好的方法来管理它)

[1]中的
:类MyClass(对象):
…:def_uuuinit_uuu(self,has_link=False):
…:如果有_链接:
…:self.other_instance=MyClass(has_link=False)
...:
在[2]中:a=MyClass(has_link=True)
在[3]中:a.另一个例子
出[3]:

您是指通用对象实例吗?或者是同一类的对象实例本身?