2013-08-06 18 views
0

通过在A.pyPython的知名度,在功能上

class A 
    blah = some_fun(d)  <----- needs d 
    def __init__ 
    def a 
    def b 

def c 
    def d     <---- d is inside c 

是否有可能在d通过,因为目前blah不能看到d显而易见的原因?

+2

你说'C'是一个函数(不是类),和'D'是函数中定义的函数?然后不,除非'c'中有'return d'语句。 –

+2

请先修复你的代码,至少_compiles_ –

+0

这正是我所说的。 @DavidRobinson多数民众赞成我所害怕的。我想我把c放在c之外,然后把d传递给c,然后等等,这可以看到d – ealeon

回答

2

事情是这样的:

def c(): 
    def d(): 
     pass 
    return d 

blah = some_fun(c()) 
+0

这是一种方式,但c需要返回别的东西,因为它只是用于其他目的而不是返回func d。但我认为它是我的过错,因为它过于笼统,而且Q – ealeon

+0

@ealeon如果你不能返回'd',那么使'd'成为'c'的一个属性或者创建一个新函数,或者最好使它成为一个静态方法班上。 –

0

可以定义类A功能c,在这种情况下,就可以看到里面d(假设d定义在前)。那么你可能需要从函数中传出A,这样外人才能使用它。

有关这种气味的事情就像是在解决手边真正的任务的错误问题。也许你可以澄清你的问题和/或给一个更具体的例子。

0

如何:

class A 
    blah = some_fun(d) 
    def __init__ 
    def a 
    def b 

def c 
    global d 
    def d     <---- d is now global 
+0

blah对课堂来说是静态的,并且不会附加到A – ealeon

+0

的单个对象上如何处理新的更改? – superdud