![](/img/trans.png)
[英]Is there a way to list the attributes of a class without instantiating an object?
[英]Instantiating a class with an arbitrary number of attributes
這個問題特別是在這里的Python類的上下文中,但可以更概括。 我正在創建一個將使用四個變量初始化的類m
,然后我將其分配給類的實例化。 現在,這看起來像這樣:
class mm(object):
def __init__(self, a, b, c, r):
self.a = a
self.b = b
self.c = c
self.r = r
# etc.
但是,我希望能夠在一行中將變量分配給self
,類似於偽代碼:
def __init__(self, a, b, c, r):
self.varname = var for var in [a, b, c, r]
如果將它推廣到任意數量的變量會更好,這樣你就可以得到類似的東西:
def __init__(self, **kwargs):
assign(self, varname, value) for varname, value in kwargs.iteritems()
但是,據我所知,這樣的語句實際上是不可能循環的。 有人知道這樣做的方法嗎?
你可以使用setattr
:
class mm(object):
def __init__(self, **kwargs):
for varname, value in kwargs.iteritems():
setattr(self, varname, value)
您還可以使用實例的名稱空間字典進行批量分配:
class mm(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.