我想定义自己的树型类。我写过这样的代码:
class forest:
class tree:
def __init__(self):
self.var_a = []
self.var_b = []
#Or something as simple
def mk(self,something):
#Some instructions
self.a = tree()
b_var = self.a.mk(a_var)
self.b = tree()
c_var = self.a.mk(b_var)
#Some instructions
return ret
#Some code for class forest
嗯tree()
不起作用。在
self.tree()
的错误:
AttributeError: 'tree' object has no attribute 'tree'
我不知道在这种情况下如何(或是否)使用self.__init__
或{
问题
在Python3中可以使用递归类吗?它的代码是什么样子的?在
我刚做了这个实验,可以用Python3来做
这样您就不必使用“tree”类污染全局名称空间
尽管如果您不喜欢这是由于混乱/可读性问题,您可以始终创建一个单独的树类,如前所述。在
不需要嵌套类来实现container pattern。在
将树类移到森林之外。 每次实例化树时,它都可以将自身添加到林中:
问题:
直接回答:
嵌套类定义在Python中没有任何好处,因为它们的作用域没有嵌套(内部类的内容不能直接引用封闭类)。在
因此,Python中通常的模式是将多个类中的两个类(使用组合而不是继承)直接引用到另一个类中。在
后续评论:
函数和字典总是足够的(Python的早期版本没有类)。噢,我们发现类是组织代码的一种方便的方式,可以清楚地知道哪些函数对哪些数据进行操作。你怎么做这是一个品味问题。在
稍后评论:
这也可能是一个缺点,使得重用代码更加困难,测试更加困难,并且可能会混淆内省工具。在
相关问题 更多 >
编程相关推荐