关于:为什么嵌套范围规则不适用于内部类?

2008年8月13日,星期三,上​​午11:32,Cousson,Benoit 嵌套类的全部要点是避免使用仅在本地使用的类污染名称空间.因此,在这种情况下,关于重复使用优雅的论点不是很有效.
没有嵌套类的意义,因为嵌套类_不_
由Python支持.它们只是不积极的人工制品
拒绝语法非全球性.我将完全支持对
积极禁止的语言不是
模块级.
我认为它不污染.如果您想将其视为"私人"
该模块,用下划线命名.
无论如何,我发现这很清楚.我无法想象你为什么
认为这里嵌套类甚至很有用,而不是一个实例
一些可以理解的属性.我看过很多嵌套的地方
使用课程,不应该这样做.
但是,在这一点上,有一点讨论显然是
不会因为任何一方改变思想而决心.这是
显然这样的情况.
- -
阅读我的博客!我依靠您接受我的意见!我有兴趣! http://techblog.ironfroggy.com/
如果您喜欢这样的事情,请跟随我:http://www.twitter.com/irinfroggy

# 回答1


8月13日,11:38*am," Calvin Spealman" 没有嵌套类的意义,因为嵌套类_不_
由Python支持.它们只是不积极的人工制品
拒绝语法非全球性.我将完全支持对
积极禁止的语言不是
模块级.

我认为这太过分了.这不是不合理的
将小型的私人使用课程投入类定义,例如:
类临时(对象):
类私人诊断(异常):
经过
内部功能类定义可以很有意义.
我经常写一个快速的适配器课,因为我想通过
例如,可以代码的东西,例如:
def Some_function(行):
类Filemimicker(对象):
def __init __(自我):
self.index = 0
def readline(self):
线=线[self.index]
self.index += 1
返回线
function_that_calls_readline(filemimicker())
(为什么我要弄乱我的模块的名称空间
事物?)
因此,我认为编译器没有充分的理由禁止嵌套班
陈述;这有时是有用的,而不是常见的陷阱.
卡尔银行

# 回答2


在2008年8月13日星期三,晚上10:49,卡尔银行 我认为这太过分了.这不是不合理的
将小型的私人使用课程投入类定义,例如:
类临时(对象):
类私人诊断(异常):
经过
内部功能类定义可以很有意义.
我经常写一个快速的适配器课,因为我想通过
例如,可以代码的东西,例如:
def Some_functi 在(线)上:
类Filemimicker(对象):
def __init __(自我):
self.index = 0
def readline(self):
线=线[self.index]
self.index += 1
返回线
function_that_calls_readline(filemimicker())
(为什么我要弄乱我的模块的名称空间
事物?)
因此,我认为编译器没有充分的理由禁止嵌套班
陈述;这有时是有用的,而不是常见的陷阱.
卡尔银行
我知道每个规则都有其例外.我将"不要嵌套"放在
我将使用其他类似的规则,我认为最安全的说法
"永远不要这样做!",因为只有那时,你才知道,你应该
实际上在某个时候做,您有足够好的理由打破
一个"规则".
至于命名空间的混乱,我不买.当然有
要减少任何范围中的名称数量的情况,但是我
在这里看不到很大的优势.它仍然可以从模块访问,
只是班级.我也看不到嵌套课的任何示例
这在其他地方不会有用,包括您的示例.为了那个原因
重要的是,您的示例应仅使用Stringio.
- -
阅读我的博客!我依靠您接受我的意见!我有兴趣! http://techblog.ironfroggy.com/
如果您喜欢这样的事情,请跟随我:http://www.twitter.com/irinfroggy
# 回答3


在2008年8月13日星期三23:40:50 -0400,Calvin Spealman写道:
我会这样说:
"切勿筑巢课,除非您需要或赢得赌注."
我从来没有需要在课堂上筑巢,但是我已经使用了
"类工厂功能",返回类的函数.
- -
史蒂文
# 回答4


加尔文·斯佩尔曼(Calvin Spealman)
(剪)
取决于"支持"的定义.
(剪)
无论如何,我发现这很清楚.我无法想象你为什么
认为这里嵌套类甚至很有用,而不是一个实例
一些可以理解的属性.
我用相同的想法打了玩,即使用嵌套类作为一个
XML/HTML生成的声明方法.它没有很好的工作 - 在
至少不够好,不值得花更多时间在主题上 - 但是
至少我可以想象为什么OP认为"真"嵌套课会
在这里有帮助.
# 回答5


加尔文·斯佩尔曼(Calvin Spealman)
(剪)
我知道(从经验),并理解为什么Goto和Globals是
(通常)邪恶,我知道为什么公共属性可能有害 - 在
不支持计算属性的语言,也就是说,我可以
理解并解释大多数通常的和鲜为人知的"黄金
规则"(Demeter的法律等),甚至是一对非常本地的或
尚未编写的(蒙基匹)有人吗?),但我绝对没有
看看嵌套课的问题是什么.

标签: python

添加新评论