当前位置: 首页 > 面试题库 >

Python-什么是“第一类”对象?

濮阳靖
2023-03-14
问题内容

在给定的编程语言中,什么时候将对象或其他东西称为“一流”,为什么?它们与没有语言的语言有何不同?

编辑。当一个人说“一切都是对象”时(就像在Python中一样),他的确表示“一切都是一流的”吗?


问题答案:

简而言之,这意味着对对象的使用没有任何限制。它与任何其他对象相同。

第一类对象是可以动态创建,销毁,传递给函数,作为值返回并具有编程语言中其他变量所具有的所有权利的实体。

根据语言,这可能意味着:

  • 可表示为匿名文字值
  • 可存储在变量
  • 可存储在数据结构
  • 具有固有身份(独立于任何给定名称)
  • 在与其他实体平等方面具有可比性
  • 可作为参数传递给过程/功能
  • 由于过程/功能可退还
  • 在运行时可构造
  • 可打印
  • 易读
  • 在分布式过程中可传播
  • 在外部运行过程中可存储

但是,在C ++函数中,它们本身不是一流的对象:

  • 你可以覆盖’()’运算符,以使它具有对象函数(第一类)成为可能。
  • 函数指针是一流的。
  • boost bind,lambda和function确实提供了一流的功能
    在C ++中,类不是第一类对象,但是这些类的实例是。在Python中,类和对象都是一流的对象。(有关将类作为对象的更多详细信息,请参见此答案)。

这是Javascript一流函数的示例:

// f: function that takes a number and returns a number
// deltaX: small positive number
// returns a function that is an approximate derivative of f
function makeDerivative( f, deltaX )
{
    var deriv = function(x)
    { 
       return ( f(x + deltaX) - f(x) )/ deltaX;
    }
    return deriv;
}
var cos = makeDerivative( Math.sin, 0.000001);
// cos(0)     ~> 1
// cos(pi/2)  ~> 0

不是第一类对象的实体称为第二类对象。C ++中的函数是第二类,因为它们不能动态创建。

关于编辑:

编辑。当一个人说“一切都是对象”时(就像在Python中一样),他的确表示“一切都是一流的”吗?

术语“对象”可以宽松地使用,并不意味着是一流的。将整个概念称为“一流实体”可能更有意义。但是在Python中,它们的目标是使所有东西都达到一流。我相信发表你讲话的人的意图是一流的。



 类似资料:
  • 什么是 this? 我们已经列举了各种不正确的臆想,现在让我们把注意力转移到 this 机制是如何真正工作的。 我们早先说过,this 不是编写时绑定,而是运行时绑定。它依赖于函数调用的上下文条件。this 绑定与函数声明的位置没有任何关系,而与函数被调用的方式紧密相连。 当一个函数被调用时,会建立一个称为执行环境的活动记录。这个记录包含函数是从何处(调用栈 —— call-stack)被调用的,

  • JavaScript 中最令人困惑的机制之一就是 this 关键字。它是一个在每个函数作用域中自动定义的特殊标识符关键字,但即便是一些老练的 JavaScript 开发者也对它到底指向什么感到困扰。 任何足够 先进 的技术都跟魔法没有区别。— Arthur C. Clarke JavaScript 的 this 机制实际上没有 那么 先进,但是开发者们总是在大脑中插入“复杂”和“混乱”来解释这句话

  • 问题内容: 元类是什么,我们将它们用于什么? 问题答案: 元类是类的类。类定义类的实例(即对象)的行为,而元类定义类的行为。类是元类的实例。 虽然在Python中你可以对元类使用任意可调用对象(例如Jerub演示),但是更好的方法是使其成为实际的类。是Python中常见的元类。它本身是一个类,并且是它自己的类型。你将无法纯粹使用Python 重新创建类似的东西,但是Python有点作弊。要在Pyt

  • 问题内容: 在Python中,什么是元类?我们将它们用于什么? 问题答案: 元类是类的类。类定义类的实例(即对象)的行为,而元类定义类的行为。类是元类的实例。 尽管在Python中您可以对元类使用任意可调用对象(例如Jerub演示),但是更好的方法是使其成为实际的类。type是Python中常见的元类。type它本身是一个类,并且是它自己的类型。您将无法type纯粹在Python中重新创建类似的内

  • 1.1 Python 能做什么? 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情。 ——Linux 之父 Linus Torvalds 作为一个实用主义的学习者,最关心的问题一定是 “我为什么要选择学 Python,学会之后我可以用来做什么?” 首先,对于初学者来说,比起其他编程语言,Python 更容易上手。 Python 的设计哲学是优雅、明确、

  • 复习 对于那些没有花时间学习 this 绑定机制如何工作的 JavaScript 开发者来说,this 绑定一直是困惑的根源。对于 this 这么重要的机制来说,猜测、试错、或者盲目地从 Stack Overflow 的回答中复制粘贴,都不是有效或正确利用它的方法。 为了学习 this,你必须首先学习 this不是 什么,不论是哪种把你误导至何处的臆测或误解。this 既不是函数自身的引用,也不是