繁体   English   中英

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

[英]Python best practice: class definition inside function?

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

例如:

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()

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

这很糟糕,因为它会导致以下中断:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM