Archerwan_ 发表于 2022-8-22 21:59:14

在使用__getattr__方法时遇到的问题 请求大神指教

class B:
        def __getattr__(self, attrname):
                self.attrname = 956

               
>>> b = B()
>>> b.name
>>> b.name
>>> b.__dict__
{'attrname': 956}


请问各位大佬 为什么结果为 b.attrname = 956;不应该是b.name = 956吗
求求了       想了好久不能理解

hveagle 发表于 2022-8-23 09:54:14

>>> class D:
      def __getattr__(self, attrname):
                self.attrname = 956

               
>>> d = D()
>>> d.name
>>> d.ddddd
>>> d.msgvdfngdchnujnjdhsjfu
>>> d.attrname
956
>>>
其实是很正常的,因为你写的是:
self.attrname = 956
所以name是不出结果的

Archerwan_ 发表于 2022-8-23 09:58:06

hveagle 发表于 2022-8-23 09:54
其实是很正常的,因为你写的是:

所以name是不出结果的

attrname 不是形式参数吗 我想要的效果是: 当对象没有某个属性时候 就为这个属性赋值为956
比如他没有name属性 我就想 让他的name = 956;他没有age属性 就让他的age属性为956
但是这个为什么只能设置attrname呢 我不明白的地方就在这里 能不能帮我解答一下 谢谢你

hveagle 发表于 2022-8-23 10:14:38

本帖最后由 hveagle 于 2022-8-23 13:24 编辑

你的代码传入的参数attrname是没用的,而里面写的是
self.attrname = 956
就是把这个对象赋值了1个叫attrname的属性,赋值为956,传入的参数在这里是没用的

hveagle 发表于 2022-8-23 10:17:28

你找找其他人吧

hveagle 发表于 2022-8-23 10:20:07

遇率遇(哨子声)@漫星闪 @青出于蓝 @人造人 @不二如是

Archerwan_ 发表于 2022-8-23 10:22:33

hveagle 发表于 2022-8-23 10:17
你找找其他人吧

谢谢您

Archerwan_ 发表于 2022-8-23 11:54:03

已经解决谢谢
页: [1]
查看完整版本: 在使用__getattr__方法时遇到的问题 请求大神指教