Python 如何在类中使用对象本身

Python 如何在类中使用对象本身,python,python-3.x,Python,Python 3.x,一个简单的例子如下: class abs_obj: def __init__(self, acceptType = abs_obj): # do something pass 这将给出错误消息: NameError: name 'abs_obj' is not defined 有什么建议吗 这里的问题是,直到编译了类的所有方法之后,才真正创建该类,但默认值在编译时只计算一次 可以指定不同的默认值,然后通过操作函数的func_defaults属性将其更改

一个简单的例子如下:

class abs_obj:
    def __init__(self, acceptType = abs_obj):
        # do something
        pass
这将给出错误消息:

NameError: name 'abs_obj' is not defined

有什么建议吗

这里的问题是,直到编译了类的所有方法之后,才真正创建该类,但默认值在编译时只计算一次

可以指定不同的默认值,然后通过操作函数的func_defaults属性将其更改为所需的值。但这很难看,并且不能保证在所有Python实现中都能工作

解决此类问题的更常见方法是:

def __init__(self, acceptType = None):
    if acceptType is None:
        acceptType = abs_obj
    # do something
    pass

如果参数的有效值为None,则必须选择其他值作为默认值。

如果我这样尝试:acceptType='abs_obj',则acceptType只是一个字符串。这个问题与注释无关,不确定为什么要将其作为的副本关闭。这听起来像是XY问题。您使用
acceptType
的目的是什么?您只需使用
self.\uuuu class\uuu
(或
type(self)
)即可获得对
self
实际类的引用。你需要人们能够传递一个完全不同的类吗?是的,我需要默认类型是它自己。我尝试了你的两个建议,但是python报告了一个相同的错误:NameError:name'self'没有定义。