Python最佳实践:函数内部的类定义?

2024-04-29 13:13:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我所处的情况是,函数返回的结构可能不需要在该函数之外的任何地方使用。然而,由于它不是一个简单的值,而是一个实际的对象,我想在我的函数中声明一个类,我可以实例化它然后返回。在

例如:

def CreateSomeFunkyDataStructure():

    class FunkyClass:
        def __init__(self):
            self.var1 = 'Play that funky music white boy.'

        def getFunky(self):
            print 'Play that funky music right.'


    x = FunkyClass()

    return x


o = CreateSomeFunkyDataStructure()

print o.var1
o.getFunky()

我的问题是这是一个好的做法还是一个坏的做法,因为这只是觉得奇怪。同时,在我看来,由于封装的目的是阻止某人访问函数的实现,在这种情况下,它可能是非常合适的。如果该类不是程序中任何地方都需要的,那么程序的其余部分就没有理由访问它。在


Tags: 函数self程序playthatdef地方music
1条回答
网友
1楼 · 发布于 2024-04-29 13:13:17

这很糟糕,因为它会造成以下中断:

  1. 类型检查,使用isinstance(result, FunkyClass)
    此外,调用CreateSomeFunkyDataStructure多个tiem的结果甚至不是同一类型!(即,type(f1) is not type(f2)
  2. 使用map(FunkyClass.getFunky, [funcy1, funcy2])静态调用成员
  3. pickleing
    这要求类在模块范围内是可见的,即使是嵌套的类也会导致它阻塞

相关问题 更多 >