Python的内部/嵌套类使我感到困惑。没有他们,有什么事情是无法完成的吗?如果是这样,那是什么东西?
引用自http://www.geekinterview.com/question_details/64739:
内部类的优点:
- 类的逻辑分组
:如果一个类仅对另一个类有用,那么将其嵌入该类并将两者保持在一起是合乎逻辑的。嵌套此类“帮助程序类”可使它们的程序包更加简化。- 增加封装
:考虑两个顶级类A和B,其中B需要访问A的成员,否则它们将被声明为私有。通过将B类隐藏在AA类中,可以将其成员声明为私有,B可以访问它们。另外,B本身可以对外界隐藏。- 更具可读性和可维护性的代码 :在顶级类中嵌套小类会使代码更靠近使用位置。
主要优势是组织。可以用内部类实现什么 可 没有他们来完成。
Spring留档指出: “如果最后两段代码实际上存在于同一个应用程序中,那么可以删除两个RowMapper匿名内部类中存在的重复,并将其提取到单个类(通常是静态内部类)中,然后根据需要由DAO方法引用。” 本例中的“最后两个片段”是使用两个具有相同逻辑的行映射器映射其调用结果的数据库方法。 我的问题是为什么内部RowMapper类需要是静态的。。。还是一定要这样?我的DAO中有一个自动连接的服务方
问题内容: 我可以想到的对于Python类的每次使用,我都可以想到另一个同样(可能更多)可接受的解决方案,以实现相同的效果。例如: 在任何情况下,这都是最合适的解决方案吗?如果是这样,在什么情况下? 问题答案: 该函数是惰性的;它仅使用一项所需的内存。另一方面,和惯用法在内存中创建对象的n个副本。对于五个项目,乘法习惯用法可能更好,但是如果必须重复一百万次,您可能会注意到资源问题。 不过,很难想象
问题内容: 在Java中,您可以使用匿名内部类内联定义一个新类。当您只需要重写类的单个方法时,这很有用。 假设您要创建一个仅覆盖单个方法的子类(例如)。在Java中,您可以编写如下代码: 这段代码创建了一个匿名类,该类仅扩展和覆盖方法。 Python中有类似的习语吗?在这些情况下使用哪种习语? 问题答案: 您可以使用内建函数即时创建类。例如: 由于OptionParser不是新式类,因此您必须显式
问题内容: 元类是什么,我们将它们用于什么? 问题答案: 元类是类的类。类定义类的实例(即对象)的行为,而元类定义类的行为。类是元类的实例。 虽然在Python中你可以对元类使用任意可调用对象(例如Jerub演示),但是更好的方法是使其成为实际的类。是Python中常见的元类。它本身是一个类,并且是它自己的类型。你将无法纯粹使用Python 重新创建类似的东西,但是Python有点作弊。要在Pyt
(我一直在重读那个问题标题,思考它看起来有多荒谬,但我向你保证,这是对问题的最佳描述,我有一个实际的应用程序,其中这是最好的结构。我发誓我没有疯。) 考虑以下内容。每个块都是一个单独的文件: 注意,enclosinstance业务是为了解决涉及中间构造函数调用的问题。请参阅“为什么外部类不能扩展内部类?”。 我希望输出为“2”。但是相反,我在System.out.println(a.this.I)