wbzxz 发表于 2024-7-30 23:03:51

请问是不是运行结果有问题

>>> class C:
...   def __init__(self, name, age):
...         self.name = name
...         self.__age = age
...   def __getattribute__(self, attrname):
...         print("拿来吧你~")
...         return super().__getattribute__(attrname)
...      
>>> c = C("小甲鱼", 18)
>>> getattr(c, "name")
拿来吧你~
>>> c._C__age
拿来吧你~
18

您好,请问上面这些代码中。
getattr(c, "name") 这条语句运行结果有问题,我觉得应该是
拿来吧你~
小甲鱼

但是实际运行结果是:
拿来吧你~

请问是为什么呢?

三体人的智子 发表于 2024-7-31 06:58:48

本帖最后由 三体人的智子 于 2024-7-31 07:00 编辑

你的代码没有问题,运行后和你想的一样,没有问题


class C:
    def __init__(self,name,age):   #注意下划线有两个,"__" 不是"_"
      self.name=name
      self.__age=age
    def __getattribute__(self,attrname):
      print("拿来把你")
      return super().__getattribute__(attrname)#注意下划线两个!不要写成"_"

c=C("小甲鱼",18)
getattr(c,"name")
拿来把你
'小甲鱼'

请检查你的代码,或更改编译器
页: [1]
查看完整版本: 请问是不是运行结果有问题