这是否可以动态地在python对象中生成属性?
例如,对象只有两个属性,在本例中为person object, 只有名字和第二个名字。 这是否可以动态生成性别属性?谢谢 简短回答:是的这是否可以动态地在python对象中生成属性?,python,object,dynamic,python-3.x,Python,Object,Dynamic,Python 3.x,例如,对象只有两个属性,在本例中为person object, 只有名字和第二个名字。 这是否可以动态生成性别属性?谢谢 简短回答:是的 class Person(object): def __init__(self): self.first_name = 'Will' self.second_name = 'Awesome' my_guy = Person() my_guy.gender = "Male" print(my_guy.gender) 将
class Person(object):
def __init__(self):
self.first_name = 'Will'
self.second_name = 'Awesome'
my_guy = Person()
my_guy.gender = "Male"
print(my_guy.gender)
将打印
Male
如果您在编写代码时知道此属性的调用,您可以
my_guy = Person()
attr = 'secret_habit' # this could be read from file, keybrd etc.
value = 'wont tell you'
setattr( my_guy, attr, value)
print(my_guy.secret_habit)
我得到“不会告诉你”忘记
\uu dict\uuu
并使用setattr
/getattr
。访问实例字典是脆弱的,它在许多情况下失败(例如,\uuuuuu slots\uuuu
、旧式类、属性、其他属性访问覆盖,可能甚至更多),这些情况可能不是大多数,Dela:按照你的建议来修正它。注意应该用这种方法:如果你调用<代码>个人():性别< /代码>,你会得到一个AtditError,所以如果可能的话,一定要抓住它。