类外Python调用方法

类外Python调用方法,python,quantlib,Python,Quantlib,我来自ruby/C,是Python新手 我正在查看以下代码: def raiseFlag(): global flag flag = 1 class TermStructureTest(): def testImpliedObs(self): global flag flag = None h = RelinkableYieldTermStructureHandle() settlement = self

我来自ruby/C,是Python新手

我正在查看以下代码:

def raiseFlag():
    global flag
    flag = 1

class TermStructureTest():

    def testImpliedObs(self):
        global flag
        flag = None
        h = RelinkableYieldTermStructureHandle()
        settlement = self.termStructure.referenceDate()
        new_settlement = self.calendar.advance(settlement,3,Years)
        implied = ImpliedTermStructure(h,new_settlement)
        obs = Observer(raiseFlag)
        obs.registerWith(implied)
        h.linkTo(self.termStructure)
        if not flag:
            self.fail("Observer was not notified of term structure change")

为什么在TermStructureTest()类中调用“raiseFlag”有效

顶层定义的函数称为模块(文件)级定义的函数。因此,如果您在同一个文件中,它是全局可访问的

如果你在另一个文件中,你需要

import foo #then use foo.raiseFlag()


顶层定义的函数称为模块(文件)级定义的函数。因此,如果您在同一个文件中,它是全局可访问的

如果你在另一个文件中,你需要

import foo #then use foo.raiseFlag()


具体地说:对于Python3.x和Python2.x,具体地说:对于Python3.x和Python2.x,此代码不调用
raiseFlag
。它可能不调用它,但它确实使用了它。对于这个问题,有一个次要的quibble.OP:阅读Python风格指南()。一方面,方法的名称应该是
像this
,而不是
像this
(snake-case而不是camel-case)。但是这段代码不调用
raiseFlag
。它可能不调用它,但它确实使用了它。对于这个问题,有一个次要的quibble.OP:阅读Python风格指南()。首先,方法的命名应该像这样,而不是像这样(蛇形而非驼形)。