在 Python 中初始化 class 变量的快速方法
Fast way to initialize class variables in Python
我想初始化一个实例,让 args 和 kwargs 都成为 class 变量。
class Example():
def __init__(
self,
a: str,
b: bool,
c: int,
d="str",
e=True,
f=123,
):
class_member = dict(locals())
del class_member["self"]
self.set_property(class_member)
@classmethod
def set_property(cls, kwargs):
for key, value in kwargs.items():
setattr(cls, key, value)
a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d) # test
我搜索了很多,得到了上面的结果。
有没有其他更简洁的方法来处理这个问题?谢谢!
--编辑--
感谢所有回答。
我的简化版:
class Example():
def __init__(
self,
a: str,
b: bool,
c: int,
d="str",
e=True,
f=123,
):
class_member = dict(locals())
del class_member["self"]
for key, value in class_member.items():
setattr(Example, key, value)
a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d) # test
我之前考虑过使用**kwarg
,但我仍然需要为kwargs分配默认值。所以这是我的最终解决方案。
您只能使用 setattr
和 kwargs
:
class Example:
def __init__(self, **kwargs):
for k, v in kwargs.items():
setattr(Example, k, v)
a = Example(a="test", b=True, c=1, d="test", e=False, f=456)
print(Example.d) # test
我想初始化一个实例,让 args 和 kwargs 都成为 class 变量。
class Example():
def __init__(
self,
a: str,
b: bool,
c: int,
d="str",
e=True,
f=123,
):
class_member = dict(locals())
del class_member["self"]
self.set_property(class_member)
@classmethod
def set_property(cls, kwargs):
for key, value in kwargs.items():
setattr(cls, key, value)
a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d) # test
我搜索了很多,得到了上面的结果。
有没有其他更简洁的方法来处理这个问题?谢谢!
--编辑--
感谢所有回答。 我的简化版:
class Example():
def __init__(
self,
a: str,
b: bool,
c: int,
d="str",
e=True,
f=123,
):
class_member = dict(locals())
del class_member["self"]
for key, value in class_member.items():
setattr(Example, key, value)
a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d) # test
我之前考虑过使用**kwarg
,但我仍然需要为kwargs分配默认值。所以这是我的最终解决方案。
您只能使用 setattr
和 kwargs
:
class Example:
def __init__(self, **kwargs):
for k, v in kwargs.items():
setattr(Example, k, v)
a = Example(a="test", b=True, c=1, d="test", e=False, f=456)
print(Example.d) # test