令我惊讶的是,我以前没有问过我的问题(像上面的措词)。我希望有人可以在像Python这样的OOP语言的上下文中分解这个基本术语“对象”。用一种像我这样的初学者就能掌握的方式来解释。
当我在Google上键入问题时,发现的第一个帖子是here。
这是定义: 使用该类的构造函数创建一个对象。该对象将被称为类的实例。
Wikipedia的定义如下: 对象是类的实例。对象是一种抽象。它们既保存数据,又保存数据的方式。数据通常在对象外部不可见。
我希望有人可以帮助我分解这个至关重要的概念,或者请我指点更多的资源。谢谢!
答案 0 :(得分:1)
要深入,您需要了解Python data model。
但是,如果您想要一个光滑的stackoverflow备忘单,让我们从字典开始。 (为了避免循环定义,我们至少同意字典是键到值的映射。在这种情况下,我们甚至可以说键肯定是 strings 。)>
def some_method():
return 'hello world'
some_dictionary = {
"a_data_key": "a value",
"a_method_key": some_method,
}
那么,对象就是这样的映射,并带有一些附加的语法糖,使您可以使用点表示法访问“键”。
现在,还有更多的东西。 (实际上,如果您想了解Python以外的知识,我建议使用The Art of the Metaobject Protocol。)您必须跟进“但是什么是 instance ?”和“如何对这样的词典中的条目进行 iterate 这样的操作?”和“什么是类型系统”? Skam的很好的回答解决了其中一些问题。
我们可以讨论python dunder 方法,以及它们基本上是如何实现诸如 但是,由于该问题基本上是博士学位级别的,所以我想我的回答会非常简化,看看是否要限制该问题。sized
(具有长度的事物),可比较类型(x
答案 1 :(得分:1)
在Python和所有其他面向对象编程(OOP)语言的上下文中,对象具有两个主要特征:状态和行为。
您可以将构造函数视为工厂,该工厂创建具有状态和行为的对象的实例。
State - Any instance or class variables associated to that object.
Behavior - Any instance or class methods
以下是Python中的类示例,以说明其中的一些概念。
class Dog:
SOUND = 'woof'
def __init__(self, name):
"""Creates a new instance of the Dog class.
This is the constructor in Python.
The underscores are pronounced dunder so this function is called
dunder init.
"""
# this is an instance variable.
# every time you instantiate an object (call the constructor)
# you must provide a name for the dog
self._name = name
def name(self):
"""Gets the name of the dog."""
return self._name
@classmethod
def bork(cls):
"""Makes the noise Dogs do.
Look past the @classmethod as this is a more advanced feature of Python.
Just know that this is how you would create a class method in Python.
This is a little hairy.
"""
print(cls.SOUND)
尽管我同意这个问题有点模糊的意见。请更具体一些,但是我提供的答案是Python中类和对象的快速概述。
答案 2 :(得分:1)
对象是面向对象语言的基本构建块。整数,字符串,浮点数,甚至数组和字典都是对象。更具体地说,任何单个整数或任何单个字符串都是一个对象。数字12是一个对象,字符串“ hello,world”是一个对象,列表是可以容纳其他对象的对象,依此类推。您一直都在使用对象,甚至可能没有意识到。
每个对象都有一个类型,该类型定义您可以对该对象执行的操作。例如,int
类型定义了向int添加内容时发生的情况,尝试将其转换为字符串时发生的情况等等。
从概念上讲,如果不是字面意思,则 type 的另一个词是 class 。定义类时,本质上是在定义自己的类型。就像12
是整数的实例,"hello world"
是字符串的实例一样,您可以创建自己的自定义类型,然后创建该类型的实例。每个实例都是一个对象。
除了在显示屏上打印字符串外,大多数程序还需要管理的不仅仅是数字和字符串。例如,您可能正在编写一个处理图片的程序,例如photoshop。或者,也许您正在创建iTunes的竞争对手,并且需要操纵歌曲和歌曲集。也许您正在编写程序来管理配方。
单个图片,单个歌曲或单个配方都是特定类型的对象。唯一的区别是,您可以自己定义对象,而不是对象是语言提供的类型(例如:整数,字符串等)。
答案 3 :(得分:1)
我认为 O.P. 提出了一个很好的问题。对象是一个应该带有定义的词。我发现这个让我的事情变得更简单。也许它会帮助您对对象是什么有一个大致的概念。
对象:对象是将变量和函数封装到单个实体中。对象从类中获取它们的变量和函数。类本质上是创建对象的模板。
请参阅:https://www.learnpython.org/en/Classes_and_Objects 了解更多信息。
这可能不是一个完整的定义,但它是一个我可以理解和使用的概念。
答案 4 :(得分:-1)
对象只是数据(变量)和作用于数据的方法(函数)的集合。
类是该对象的蓝图。