我已经坚持了一段时间。一旦构造,我无法访问对象属性的值,但是控制台打印名称就好了。属性的名称和数量需要是动态的,并根据它们的来源而变化。因此,我不能只使用一致的方式。
starting_list = ["Comapny", "Contact Name", "Email", "Phone", "URL", "Country", "Source"]
class NewClass(object):
_myattrib = None
def __setattr__(self, prop, val):
super().__setattr__('myattrib', val)
print("setting myattrib")
def __init__(self):
for item in starting_list:
#cleaning up a bit
item = str(item)
item = item.lower()
item = item.strip()
item = item.replace(' ', '_')
self.__setattr__(self, item, 'hi')
print(item) #it reads it here
print(NewClass.url)
任何帮助都会得到赞赏。
答案 0 :(得分:1)
我会更新对象__dict__
属性,而不是弄乱__setattr__
class NewClass:
def __init__(self, items=(), default='hi'):
sanitized = (str(item).lower().strip().replace(' ', '_') for item in items)
self.__dict__.update({item: default for item in sanitized})
starting_list = ["Comapny", "Contact Name", "Email", "Phone", "URL", "Country", "Source"]
nc = NewClass(starting_list)
print(nc.email) # prints hi
编辑:为了便于阅读,将一些行拆分