Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是否可以动态地在python对象中生成属性?_Python_Object_Dynamic_Python 3.x - Fatal编程技术网

这是否可以动态地在python对象中生成属性?

这是否可以动态地在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) 将

例如,对象只有两个属性,在本例中为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)

将打印
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,所以如果可能的话,一定要抓住它。