下面是我的设置:
from functools import partial
class MyClass:
def __init__(self, some_kwarg=0):
pass
def func(class):
# VERSION 1: I don't do anything
# VERSION 2: I do this
class = partial(class, some_kwarg=1)
# check if class points to MyClass
### THIS is where I want your input stack overflow
对我来说,这里有几件事:
class == MyClass
吗李>partial
。我天真的解决办法是class.func == MyClass
(class == MyClass or (isinstance(class, partial) and partial.func == MyClass))
MyClass
是可调用的,调用时返回MyClass
的实例partial
只是将MyClass
包装在一个可调用对象中,该对象在被调用时,使用一些预先确定的参数调用MyClass
partial(MyClass)()
,根据定义,将返回MyClass
的实例。你不需要检查(虽然可以重写
MyClass.__new__
以返回除MyClass
实例之外的其他,但这不是您需要检查的,因为partial
的。)首先,
class
是一个保留字,所以我将使用class_
(perPEP8)使用
is
而不是==
来检查标识而不是相等(尽管它们在处理类对象时通常是相同的)或者,如果需要说明子类,请使用^{} ,其中包括
class_ is MyClass
的情况参见第1点,将}
class_
替换为^{你在正确的轨道上。我会尝试将嵌套表达式展平,可能如下所示:
例如:
输出:
相关问题 更多 >
编程相关推荐