首页 > 解决方案 > 要从一个类中调用一个函数,Python 是否会遍历该类的每个函数,直到找到要调用的函数?

问题描述

例如,假设我有这个:

class RandomFunctions:
    def function_1:
        print('function 1 calling')

    def function_2:
        print('function_2 activated')

    def function_3:
        print('function_3 activated')

    def function_4:
        print('function_4 activated')

RandomFunctions().function_4()

要调用function_4,Python 是遍历类中的所有其他函数,检查它是否是正确的函数,还是直接调用它?

标签: pythonpython-3.xfunctionclass

解决方案


function_4是一个类属性,其名称存储在实现映射协议的对象中。查找是通过对该对象的直接索引来完成的。不涉及迭代,定义函数的顺序在很大程度上是无关紧要的。

>>> type(RandomeFunctions.__dict__)
<class 'mappingproxy'>
>>> RandomFunctions.__dict__['function_4'] is RandomFunctions.function_4
True

推荐阅读