我们可以为Python类的不同别名使用不同的_name _;属性吗?
我有一个非常简单的泛型类,只包含关键字参数:我们可以为Python类的不同别名使用不同的_name _;属性吗?,python,alias,classname,Python,Alias,Classname,我有一个非常简单的泛型类,只包含关键字参数: class genObj(object): def __init__(self, **kwargs): for kwa in kwargs: self.__setattr__(kwa, kwargs[kwa]) 现在,我想对具有不同参数的不同对象使用它,使用别名,如下所示: rectangle = genObj rr = rectangle(width=3, height=1) circle = g
class genObj(object):
def __init__(self, **kwargs):
for kwa in kwargs:
self.__setattr__(kwa, kwargs[kwa])
现在,我想对具有不同参数的不同对象使用它,使用别名,如下所示:
rectangle = genObj
rr = rectangle(width=3, height=1)
circle = genObj
cc = circle(radius=2)
它工作正常。没问题。我想让类知道它使用的别名。现在如果我问:
rr.__class__.__name__
>> "genObj"
cc.__class__.__name__
>> "genObj"
我想要的是为rr查询获取“rect”,为cc查询获取“circle”。
有可能吗?如何设置?问题是,按照设置方式,
圆
和矩形
是同一个对象(在本例中是同一类型),因此圆。\uuuuu名称\uuuuuuuuuuu是矩形。\uuuuuuu名称\uuuuuuuuuuuu
。在我看来,获得所需内容的最干净的方法是将圆
和矩形
作为genObj
的两个子类。你可以这样做:
class genBase(object):
def __init__(self, **kwargs):
for kwa in kwargs:
self.__setattr__(kwa, kwargs[kwa])
def genObj(name):
return type(name, (genBase,), {})
circle = genObj("circle")
print issubclass(circle, genBase)
# True
c = circle(r=2)
print type(c).__name__
# circle