设置自定义对象属性

突变体

我正在处理继承的类,想知道是否可以使用方法设置自定义对象属性。它会像这样工作:

class MyClass(object):
    def __init__(self):
        super.__init__()
    def setCustAttr(self, name, value):
        #...
g=MyClass()
g.setCustAttr("var",5)
g.var+=6
g.var="text"
  • 有什么办法吗?
  • 你能用exec("self."+string+"="+value)吗?
切普纳

传递给setCustAttr的参数正是您要传递给的参数setattr

def setCustAttr(self, name, value):
    setattr(self, name, value)

你为什么要包装纸setattr您可以尝试执行一些验证:

def setCustAttr(self, name, value):
    if name not in ['bar', 'baz']:
        raise ValueError("Custom attribute must be 'bar' or 'baz'")
    if name == 'bar' and value < 0:
        raise ValueError("'bar' attribute must be non-negative")
    if name == 'baz' and value % 2:
        raise ValueError("'baz' attribute must be even")

    setattr(self, name, value)

但是,这不会阻止类的用户忽略您的setCustAttr方法并直接将其分配给该对象:

g = MyClass()
g.bar = -5  # Negative bar!
g.baz = 3   # Odd baz!
g.quux = 2  # Non-bar/baz attribute!

Python有用于提供超过属性是如何在物体上设置更多的控制(见深魔法__slots____{get,set}attr____getattribute__,属性等),但通常,它们不仅用于防止以上所示的实施例。Python的方式是仅记录应如何使用类的实例,并让用户遵守您的指示。(如果不这样做,请告诫您。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设置自定义属性

来自分类Dev

libGDX+Tiled 中的 MapObject:设置对象属性,而不是自定义对象属性?

来自分类Dev

未捕获的TypeError:无法设置未定义的结构自定义对象的属性'fromObject'

来自分类Dev

设置自定义属性名称

来自分类Dev

jQuery从值设置自定义属性

来自分类Dev

选择自定义属性以设置样式

来自分类Dev

如何设置MSI自定义属性

来自分类Dev

将自定义对象的每个属性类型设置为not_analyzed

来自分类Dev

“试图设置非属性列表对象。...”带有自定义类的NSMutableDictionary

来自分类Dev

unittest.mock:在特定的模拟对象上设置自定义属性(变量)

来自分类Dev

将Label的target属性设置为自定义UserControl中的对象

来自分类Dev

如何在Worklight中的用户身份对象中设置和检索自定义属性?

来自分类Dev

在样式设置器中设置自定义附加属性

来自分类Dev

如何使用属性设置自定义UITypeEditor的属性

来自分类Dev

通过自定义属性设置特定属性的值

来自分类Dev

从特定对象的属性/字段获取自定义属性

来自分类Dev

在对象的属性上定义自定义标题

来自分类Dev

将自定义属性定义为数据对象

来自分类Dev

将自定义对象属性映射回原始对象

来自分类Dev

自定义对象属性-多个基本变量或对象数组

来自分类Dev

将自定义对象属性映射回原始对象

来自分类Dev

自定义属性

来自分类Dev

使用ApplicationSettingsBase保存自定义设置的C#中的自定义对象的列表

来自分类Dev

使用自定义属性值在模板中设置颜色

来自分类Dev

在按钮上设置自定义属性

来自分类Dev

WPF根据自定义属性的值设置CustomControl样式

来自分类Dev

角度形式:在自定义指令上设置$ dirty属性

来自分类Dev

如何在自定义WebViewPage中设置属性?

来自分类Dev

设置自动分隔线的自定义属性

Related 相关文章

  1. 1

    设置自定义属性

  2. 2

    libGDX+Tiled 中的 MapObject:设置对象属性,而不是自定义对象属性?

  3. 3

    未捕获的TypeError:无法设置未定义的结构自定义对象的属性'fromObject'

  4. 4

    设置自定义属性名称

  5. 5

    jQuery从值设置自定义属性

  6. 6

    选择自定义属性以设置样式

  7. 7

    如何设置MSI自定义属性

  8. 8

    将自定义对象的每个属性类型设置为not_analyzed

  9. 9

    “试图设置非属性列表对象。...”带有自定义类的NSMutableDictionary

  10. 10

    unittest.mock:在特定的模拟对象上设置自定义属性(变量)

  11. 11

    将Label的target属性设置为自定义UserControl中的对象

  12. 12

    如何在Worklight中的用户身份对象中设置和检索自定义属性?

  13. 13

    在样式设置器中设置自定义附加属性

  14. 14

    如何使用属性设置自定义UITypeEditor的属性

  15. 15

    通过自定义属性设置特定属性的值

  16. 16

    从特定对象的属性/字段获取自定义属性

  17. 17

    在对象的属性上定义自定义标题

  18. 18

    将自定义属性定义为数据对象

  19. 19

    将自定义对象属性映射回原始对象

  20. 20

    自定义对象属性-多个基本变量或对象数组

  21. 21

    将自定义对象属性映射回原始对象

  22. 22

    自定义属性

  23. 23

    使用ApplicationSettingsBase保存自定义设置的C#中的自定义对象的列表

  24. 24

    使用自定义属性值在模板中设置颜色

  25. 25

    在按钮上设置自定义属性

  26. 26

    WPF根据自定义属性的值设置CustomControl样式

  27. 27

    角度形式:在自定义指令上设置$ dirty属性

  28. 28

    如何在自定义WebViewPage中设置属性?

  29. 29

    设置自动分隔线的自定义属性

热门标签

归档