小编Ell*_*est的帖子

OOP中的抽象:多个但截然不同的上下文?

我一直在进行有关OOP概念的研究,并且在试图理解什么是Abstraction方面存在一些问题。我已经阅读了许多关于该主题的Stack Overflow帖子,但实际上并不能确定令人满意的答案。

我已经看到了很多的讨论上的差异抽象封装,自然开始约开始思考抽象躲藏方面特定类的作品,并提供通过抽象类的API如何。以下是一些引导我朝这个方向发展的帖子:

但是,当我阅读更多文章时,我注意到在继承上下文中描绘抽象的答案,特别是使用接口和抽象类来提供特定实体(类)的抽象。我假设以这种方式给出的抽象将允许开发人员根据此抽象概述的“准则”适当地扩展新对象。以下是一些引导我朝这个方向发展的帖子:

我不确定我是否会完全遗漏这里的要点,但是它变得非常令人困惑,因为每个答案似乎都给混音添加了些许变化。我绝对明白为什么这两种上下文在面向对象编程中都至关重要,但是我确实想要明确定义什么是抽象。

这使我明白:抽象是否可以在多个上下文中工作?不抽象描绘这两个概念?

  1. 隐藏通过接口和抽象类完成的“不必要的细节”

    • 通过接口和抽象类在要创建的类上提供抽象。我们可以提供一个接口,IPet该接口可以充当Dog类的抽象。另外,我们可以提供Animal基类作为抽象类,以提供更高级别的抽象。这可以让我们使用多态性,并允许属于我们Animal抽象的不同类彼此交互。
  2. 通过类API公开类的实现以抽象其实现

    • 给定一个Dog类,我们只需要知道它有一个feed() 函数作为其API的一部分,并调用该函数来对其进行馈送,而无需知道馈送的实际完成方式。这提供了Dog类的抽象,并让我们轻松地与类进行交互

我上面包含的链接之一包含Matthew Watson的以下引用:

“问题在于这些概念没有精确的定义,并且单词本身甚至在面向对象的上下文中也具有多种含义。”

仅仅是抽象是如此抽象,甚至定义是抽象:P吗?感谢您提前提供任何指导!

编辑:我对SO相当陌生,并不真正了解“主要基于意见”标志的含义。我看不出这个问题比关于SO上的抽象的众多问题如何有效。我认为应该较少地基于观点,因为我实际上是在指出我认为抽象在其中有意义的两个不同上下文。我已经看到许多问题,只是问什么是抽象,我认为这是一个更广泛的问题。比我在这里的问题。

oop inheritance abstraction design-patterns

6
推荐指数
1
解决办法
125
查看次数

Python iter() 时间复杂度?

我正在寻找一种从 Python 集合中检索(任何)元素的有效方法,并遇到了这种方法:

anyElement = next(iter(SET))
Run Code Online (Sandbox Code Playgroud)

当你从一个容器(比如一个集合)中生成一个迭代器时到底发生了什么?它是否只是创建一个指向内存中对象位置的指针,并在调用 next 时移动该指针?或者它是否将集合转换为列表然后从中创建一个迭代器?

我主要担心的是,如果是后者,似乎 iter() 将是 O(n) 操作。那时最好从集合中弹出一个项目,将弹出的项目存储在一个变量中,然后将弹出的项目重新插入到集合中。

感谢您提前提供任何信息!

python iterator time-complexity

5
推荐指数
1
解决办法
1291
查看次数

Pandas 操作 DataFrame 就地与非就地(就地 = True vs False)

我想知道如果有一个在内存使用量的显著减少,当我们选择操作就地一个数据帧(相对于不就地)。

我在 Stack Overflow 上做了一些搜索,发现了这篇文章,其中的答案指出,如果操作没有就地完成,则会返回数据帧的副本(我想这在有可选参数时有点明显)称为“就地”:P)。

如果我不需要保留原始数据框,那么只修改数据框是有益的(并且合乎逻辑的),对吗?

语境:

当按数据框中的特定“列”排序时,我试图获取顶部元素。我想知道这两个中哪一个更有效:

到位:

df.sort('some_column', ascending=0, inplace=1)
top = df.iloc[0]
Run Code Online (Sandbox Code Playgroud)

对比

复制:

top = df.sort('some_column', ascending=0).iloc[0]
Run Code Online (Sandbox Code Playgroud)

For the 'copy' case, it still allocates memory in making the copy when sorting even though I'm not assigning the copy to a variable right? If so, how long does it take to deallocate that copy from memory?

Thanks for any insights in advance!

python memory pandas

5
推荐指数
1
解决办法
2498
查看次数