首页 > 解决方案 > 在python中使用方法的方法

问题描述

我知道这个领域有很多问题,但没有一个明确回答我面临的问题(或者也许我真的很厚)。

所以我将功能性 python 代码转移到 OOP python,我有一些代码

class fake_class:
    def __init__(self, data_type=None):
        if data_type is None:
            self.data_type = ""
        else:
            self.data_type = data_type 

    def printToLog(x='', *args):
        if args:
            x = x.format(*args)
        else:
            x = str(x)
        logFile.write(x)
        logFile.write('\n')
        print(x)

    if __name__ == '__main__':
        main()

   def main(self):
        self.printToLog('this is just an example, for some fake code')


f = fake_class('data-xml-435')
# please appreciate that the full code is over 500 lines 
# long that has been edited down for the sake of readability

我需要 main 方法才能调用类中的其他方法,但无论我做什么,我都无法让它这样做。我已经将 printToLog 变成了一个类方法,我尝试了不同的方法来实例化 fake_class,调用都无济于事。程序抱怨它不知道 printToLog 是什么,self 是什么或 fake_class 是什么!

那么我如何在 Python 中用另一种方法调用一个方法呢?

标签: pythonoopmethods

解决方案


if __name__ == '__main__':
    main()

对类没有任何意义。你只是不需要它们。

删除后,您必须main使用您创建的对象显式调用。

f = fake_class('data-xml-435')
f.main() # or f.printToLog(with arguments) whichever is exciting you!

同样,printToLog是类的功能,所以你需要一个self

def printToLog(self, x='', *args):
    if args:
        x = x.format(*args)
    else:
        x = str(x)
    logFile.write(x)
    logFile.write('\n')
    print(x)

推荐阅读