Discuss / Python / 问题请教

问题请教

Topic source

以obj为例,请问setattr(obj,'y',19)和obj.y=19有什么区别呢?感觉后者写法上貌似更简洁直观,而且廖老师说的是在不知道对象信息的时候,我们才用hasattr()之类的函数,但是如果通过hasattr函数确定了对象含有某个属性之后,为什么不直接用obj.y的形式对该属性进行读取和赋值呢,因为貌似使用getattr(obj,'y')的前提就是已经知道了obj含有属性y,而setattr(obj,'y',19)则感觉不需要知道obj结构,相当于自行新增的一个属性y,感觉完全可以用obj.y=19替代。

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

给你举个例子:

# 把dict的key - value复制到obj,前提是obj有对应的property
def dict2bean(obj, d):
    for k, v in items(d):
        if hasattr(obj, k):
            setattr(obj, k, v) # 能写成obj.k = v吗?

有些时候那个property name也是变量

改成obj.k=v后,obj多了个叫k的变量2333333

阿不对,多了一个叫k的属性,而且k值与for循环中最后一个的值相同

小菜

#5 Created at ... [Delete] [Delete and Lock User]

我感觉差不多


  • 1

Reply