【发布时间】:2021-01-04 10:13:00
【问题描述】:
我试图在我的代码中适应良好的 oop 行为并且想知道以下几点:
我一般都有这样的类设计:
class MyClass():
def __init__(self,arg1):
self.arg1 = arg1
@property
def arg1(self):
return _arg1
@arg1.setter
def arg1(self, value):
self._arg1 = value
如果我现在写一个函数,它有一个 dict 并使用这个 dict 来设置类属性:
def set_my_dict(self):
argdict = {'arg1':4}
for k, v in argdict:
setattr(self, k, v)
在这种情况下,setattr 是否会调用 setter 进行可能的类型检查等?
【问题讨论】:
-
是的,
setattr(self, "k", v)旨在与self.k = v具有相同的语义。
标签: python oop properties setattr