为什么不能在类的实例上设置属性?

大卫11

setattr可以在类或类的实例上使用:

>>> class C(object):
...   pass
... 
>>> myc = C()
>>> setattr(myc, "val1", 1)
>>> setattr(myc, "val2", 2)
>>> myc.val1
1
>>> myc.val2
2
>>> 

但是,当我尝试设置属性时,出现了一些意外情况:

>>> setattr(myc, "val3", property(lambda self: 3))
>>> myc.val3
<property object at 0x7f4d2f30c418>

我将属性设置为类而不是实例时,得到了预期的行为:

>>> setattr(C, "val4", property(lambda self: 4))
>>> myc.val4
4

当我尝试在类的实例上设置属性时会发生什么情况?

金德尔

您不能在实例上设置属性,因为您不能这样做。好吧,可以,但是正如您所发现的那样,它是行不通的。属性仅在类上设置时有效;这就是它的设计方式。有关基础功能(描述符)如何工作的详细信息,请参见描述符HowTo

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不能在类的实例上设置属性?

来自分类Dev

为什么不能在Java中创建本地类的实例?

来自分类Dev

为什么我不能在Python中更改类的属性

来自分类Dev

为什么我不能在xcode中设置属性的值?

来自分类Dev

为什么我不能在类上使用ConditionalAttribute?

来自分类Dev

为什么不能为类实例设置成员值?

来自分类Dev

为什么我不能在类定义中实例化同一类的对象

来自分类Dev

为什么不能在Ruby的单例类定义中访问类实例变量?

来自分类Dev

为什么不能在System.Transactions命名空间中创建Transaction类的实例

来自分类Dev

为什么不能在Java WebMethods Services一侧创建本地Java类的实例?

来自分类Dev

为什么我们不能在.Net中创建静态类的实例

来自分类Dev

为什么我不能在Java中抛出或捕获泛型类的实例?

来自分类Dev

为什么我们不能在扩展类的静态方法中使用此实例?

来自分类Dev

为什么不能在类中初始化实例变量?

来自分类Dev

为什么我不能在类转换异常后检查实例类型?

来自分类Dev

Java Swing:为什么不能在JFrame实例上使用drawImage()?

来自分类Dev

为什么我不能在虚拟盒子上的Debian 64位上设置

来自分类Dev

为什么我不能在静态类中有实例成员,但可以在静态方法中有实例成员?

来自分类Dev

为什么我不能在子类中使用超类的属性(Objective-C)

来自分类Dev

django为什么不能在数据库外部设置属性?

来自分类Dev

为什么不能设置属性的属性?

来自分类Dev

为什么我不能在泛型类上静态引用内部类的静态方法?

来自分类Dev

为什么我不能在用具体类型替换接口的类上实现接口?

来自分类Dev

在Java中,为什么不能在泛型类上使用构造函数?

来自分类Dev

为什么我不能在从HashMap获得的对象上使用其他类的公共方法?

来自分类Dev

为什么 GHC 不能在 Rank 2 类型的类类型族上推导出类型相等?

来自分类Dev

为什么在JS中不能在原型上设置非功能

来自分类Dev

为什么我不能在我的 XAMPP 上为这个 PHP 网站设置虚拟主机?

来自分类Dev

为什么我不能在某些类型的 return 语句上设置断点?

Related 相关文章

  1. 1

    为什么不能在类的实例上设置属性?

  2. 2

    为什么不能在Java中创建本地类的实例?

  3. 3

    为什么我不能在Python中更改类的属性

  4. 4

    为什么我不能在xcode中设置属性的值?

  5. 5

    为什么我不能在类上使用ConditionalAttribute?

  6. 6

    为什么不能为类实例设置成员值?

  7. 7

    为什么我不能在类定义中实例化同一类的对象

  8. 8

    为什么不能在Ruby的单例类定义中访问类实例变量?

  9. 9

    为什么不能在System.Transactions命名空间中创建Transaction类的实例

  10. 10

    为什么不能在Java WebMethods Services一侧创建本地Java类的实例?

  11. 11

    为什么我们不能在.Net中创建静态类的实例

  12. 12

    为什么我不能在Java中抛出或捕获泛型类的实例?

  13. 13

    为什么我们不能在扩展类的静态方法中使用此实例?

  14. 14

    为什么不能在类中初始化实例变量?

  15. 15

    为什么我不能在类转换异常后检查实例类型?

  16. 16

    Java Swing:为什么不能在JFrame实例上使用drawImage()?

  17. 17

    为什么我不能在虚拟盒子上的Debian 64位上设置

  18. 18

    为什么我不能在静态类中有实例成员,但可以在静态方法中有实例成员?

  19. 19

    为什么我不能在子类中使用超类的属性(Objective-C)

  20. 20

    django为什么不能在数据库外部设置属性?

  21. 21

    为什么不能设置属性的属性?

  22. 22

    为什么我不能在泛型类上静态引用内部类的静态方法?

  23. 23

    为什么我不能在用具体类型替换接口的类上实现接口?

  24. 24

    在Java中,为什么不能在泛型类上使用构造函数?

  25. 25

    为什么我不能在从HashMap获得的对象上使用其他类的公共方法?

  26. 26

    为什么 GHC 不能在 Rank 2 类型的类类型族上推导出类型相等?

  27. 27

    为什么在JS中不能在原型上设置非功能

  28. 28

    为什么我不能在我的 XAMPP 上为这个 PHP 网站设置虚拟主机?

  29. 29

    为什么我不能在某些类型的 return 语句上设置断点?

热门标签

归档