Python中的对象是什么?
我很惊讶以前没有人问我的问题(措辞如上所述)。我希望有人能在像Python这样的面向对象语言的上下文中分解这个基本术语“对象”。以我这样的初学者能够掌握的方式解释 当我在谷歌上输入我的问题时,出现的第一篇帖子就被找到了 这就是定义: 使用类的构造函数创建对象。然后,该对象将被称为类的实例 定义如下: 对象是类的实例。对象是一种抽象。它们同时保存数据和操作数据的方法。数据通常在对象外部不可见Python中的对象是什么?,python,oop,object,Python,Oop,Object,我很惊讶以前没有人问我的问题(措辞如上所述)。我希望有人能在像Python这样的面向对象语言的上下文中分解这个基本术语“对象”。以我这样的初学者能够掌握的方式解释 当我在谷歌上输入我的问题时,出现的第一篇帖子就被找到了 这就是定义: 使用类的构造函数创建对象。然后,该对象将被称为类的实例 定义如下: 对象是类的实例。对象是一种抽象。它们同时保存数据和操作数据的方法。数据通常在对象外部不可见 我希望有人能帮助我打破这个重要的概念,或亲切地告诉我更多的资源。谢谢 要深入研究,你需要了解问题的本质 但
我希望有人能帮助我打破这个重要的概念,或亲切地告诉我更多的资源。谢谢 要深入研究,你需要了解问题的本质 但是如果你想要一份有光泽的stackoverflow备忘单,让我们从一本字典开始。(为了避免循环定义,我们同意字典至少是键到值的映射。在这种情况下,我们甚至可以说键绝对是字符串。) 因此,一个对象就是这样一个映射,带有一些额外的语法糖,允许您使用点符号访问“键” 现在,事情远不止这些。(事实上,如果你想理解python之外的内容,我建议你)你必须接着说“但是什么是实例?”和“你怎么能在字典中迭代这样的条目?”以及“什么是类型系统”?其中一些问题在Skam的精细回答中得到了解决 我们可以讨论python dunder方法,以及它们基本上是如何实现本机行为的协议,如
大小(长度)、可比较类型(x
但是,由于这个问题基本上是博士级的,我想我的答案会非常简化,看看你是否想限制这个问题。在Python和所有其他面向对象编程(OOP)语言的上下文中,对象有两个主要特征:状态和行为
您可以将构造函数看作是一个工厂,它创建具有状态和行为的对象实例
State-与该对象关联的任何实例或类变量。
行为-任何实例或类方法
下面是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中类和对象的快速概述。一切都是对象
对象是面向对象语言的基本构造块。整数、字符串、浮点数、甚至数组和字典都是对象。更具体地说,任何单个整数或任何单个字符串都是一个对象。数字12是一个对象,字符串“hello,world”是一个对象,列表是一个可以容纳其他对象的对象,依此类推。您一直在使用对象,甚至可能没有意识到这一点
对象具有类型
每个对象都有一个类型,该类型定义了可以对该对象执行的操作。例如,int
类型定义向int添加内容时发生的情况,以及尝试将其转换为字符串时发生的情况,等等
从概念上讲,如果不是字面意义上的话,类型的另一个词是class。定义类时,本质上就是定义自己的类型。就像12
是整数的实例,而“hello world”
是字符串的实例一样,您可以创建自己的自定义类型,然后创建该类型的实例。每个实例都是一个对象
类只是自定义类型
除了在显示器上打印字符串之外,大多数程序需要管理的不仅仅是数字和字符串。例如,您可能正在编写一个处理图片的程序,如photoshop。或者,您可能正在创建iTunes的竞争对手,需要操纵歌曲和歌曲集。或者你正在写一个程序来管理食谱
一张图片、一首歌或一份食谱都是特定类型的对象。唯一的区别是,对象不是语言提供的类型(例如:整数、字符串等),而是您自己定义的类型
- 对象只是一组数据(变量)和作用于数据的方法(函数)
- 类是该对象的蓝图
这个问题太宽泛了。答案可能从一个段落到一篇博客文章。请仔细阅读,尤其是文档。简而言之,object
是python中最基本的类型;你将与之互动的一切都是某种具有更具体属性和行为的对象。我同意这个问题很广泛:标准答案是。我想听听O.P.是否能缩小他们的提问范围。嗨,伙计们,我真的很感谢你们的评论,我现在明白了,这是多么模糊。不幸的是,我在编程方面的词汇量还很初级,因此无法在你们通常交流的水平上表达自己。我会接受小二郎下面的回答,因为这实际上是我在寻找的。我的结论是“对象”是基本的,但可以非常深入,并且现在在寻找明确的答案时会更加轻松。谢谢大家<代码>self.SOUND
将创建一个实例变量。嘿,我对这篇文章进行了升级,因为它涵盖了状态和行为,特别是对象的实例,这是最基本的例子,我对自己在回答中没有涵盖这一点感到有点恼火。谢谢Skam,也感谢这个答案!抱歉,无法更恰当地定义我的问题。\uuuu init\uuuuuu不是
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)