Python 类方法难题:__getattribute__ 如何访问类变量中的方法?

ID:21038 / 打印

python 类方法难题:__getattribute__ 如何访问类变量中的方法?

python 类方法遇到的难题:__getattribute__ 无法访问类变量中的方法

在 python 中,使用 __getattribute__ 可以查找类的方法,但有时却无法调用类变量中的方法。为了解决此问题,需要思考以下几点:

  • 在 __getattribute__ 中,通过 super().__getattribute__(_pointer__interior) 检查是否位于类初始化阶段,此时应调用父类的 __getattribute__。
  • 如果不是初始化阶段,则判断要查找的方法是否是类变量 __value 或其私有属性,如果是,则直接返回类变量的方法。
  • 否则,获取类变量 __value,然后使用 getattr 从 __value 中获取方法。

在案例中,可以通过在 pointer 类中定义一个 __str__ 方法来解决问题:

class Pointer:      def __init__(self, value=None):         ...      def __getattribute__(self, item):         ...      def __str__(self):         return getattr(self.__value, '__str__')()

这样,在调用 s.__str__ 时,就会直接调用类变量 __value 中的 __str__ 方法。

立即学习“Python免费学习笔记(深入)”;

上一篇: Python 代码提示“No module named 'matplotlib'”但 pip list 显示已安装:为什么?
下一篇: Python 中如何解决多重继承下指向类实例无法调用被指向对象魔法方法的问题?

作者:admin @ 24资源网   2025-01-14

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。