
python 类方法遇到的难题:__getattribute__ 无法访问类变量中的方法
在 python 中,使用 __getattribute__ 可以查找类的方法,但有时却无法调用类变量中的方法。为了解决此问题,需要思考以下几点:
- 在 __getattribute__ 中,通过 super().__getattribute__(_pointer__interior) 检查是否位于类初始化阶段,此时应调用父类的 __getattribute__。
- 如果不是初始化阶段,则判断要查找的方法是否是类变量 __value 或其私有属性,如果是,则直接返回类变量的方法。
- 否则,获取类变量 __value,然后使用 getattr 从 __value 中获取方法。
在案例中,可以通过在 pointer 类中定义一个 __str__ 方法来解决问题:
十天学会易语言图解教程用图解的方式对易语言的使用方法和操作技巧作了生动、系统的讲解。需要的朋友们可以下载看看吧!全书分十章,分十天讲完。 第一章是介绍易语言的安装,以及运行后的界面。同时介绍一个非常简单的小程序,以帮助用户入门学习。最后介绍编程的输入方法,以及一些初学者会遇到的常见问题。第二章将接触一些具体的问题,如怎样编写一个1+2等于几的程序,并了解变量的概念,变量的有效范围,数据类型等知识。其后,您将跟着本书,编写一个自己的MP3播放器,认识窗口、按钮、编辑框三个常用组件。以认识命令及事件子程序。第
class Pointer:
def __init__(self, value=None):
...
def __getattribute__(self, item):
...
def __str__(self):
return getattr(self.__value, '__str__')()这样,在调用 s.__str__ 时,就会直接调用类变量 __value 中的 __str__ 方法。
立即学习“Python免费学习笔记(深入)”;









