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

Python最佳实践:函数内部的类定义?,python,python-2.7,Python,Python 2.7,在这种情况下,函数返回的结构可能不需要在该函数之外的任何地方使用。然而,因为它不是一个简单的值,而是一个实际的对象,我想在我的函数中声明一个类,我可以实例化它然后返回 例如: 我的问题是,这是一个好的做法还是一个坏的做法,因为这感觉很奇怪。同时,在我看来,因为封装的目的是阻止某人访问函数的实现,所以在这种情况下,它可能非常合适。如果该类不是程序中其他任何地方所需的,则程序的其余部分没有理由访问它。这是不好的,因为它会造成以下中断: 类型检查,使用isinstance(结果,FunkyClass)

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

例如:


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

这是不好的,因为它会造成以下中断:

  • 类型检查,使用isinstance(结果,FunkyClass)
    此外,多次调用
    CreateSomeFunkyDataStructure
    的结果甚至不是同一类型!(即,
    类型(f1)不是类型(f2)
  • 使用
    map(FunkyClass.getFunky[funcy1,funcy2])静态调用成员
  • pickle
    ing
    这要求类在模块范围内可见,甚至嵌套的类也会导致阻塞
  • 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()