Что такое объект в Python? - PullRequest
1 голос
/ 26 мая 2019

Я удивлен, что мой вопрос не задавался (сформулированный как выше) прежде. Я надеюсь, что кто-то может разбить этот базовый термин «объект» в контексте языка ООП, такого как Python. Объяснено таким образом, что начинающий, как я, сможет понять.

Когда я набрал свой вопрос в Google, первое появившееся сообщение было найдено здесь .

Это определение: Объект создается с помощью конструктора класса. Этот объект затем будет называться экземпляром класса.

Википедия определяет это так: Объект является экземпляром класса. Объекты - это абстракция. Они содержат как данные, так и способы манипулирования данными. Данные обычно не видны за пределами объекта.

Я надеюсь, что кто-то мог бы помочь сломать эту жизненно важную концепцию для меня или любезно указать мне больше ресурсов. Спасибо!

Ответы [ 3 ]

1 голос
/ 26 мая 2019

В контексте Python и всех других языков объектно-ориентированного программирования (ООП) объекты имеют две основные характеристики: состояние и поведение.

Вы можете думать о конструкторе как о фабрике, которая создает экземпляр объекта.объект с состоянием и поведением.

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.

1 голос
/ 26 мая 2019

Все является объектом

Объект - это фундаментальный строительный блок объектно-ориентированного языка. Целые числа, строки, числа с плавающей запятой, даже массивы и словари - все это объекты. Более конкретно, любое одно целое число или любая отдельная строка является объектом. Число 12 - это объект, строка «привет, мир» - это объект, список - это объект, который может содержать другие объекты и т. Д. Вы использовали объекты все время и, возможно, даже не понимаете этого.

Объекты имеют типы

Каждый объект имеет тип, и этот тип определяет, что вы можете делать с объектом. Например, тип int определяет, что происходит, когда вы добавляете что-то в int, что происходит, когда вы пытаетесь преобразовать это в строку, и так далее.

Концептуально, если не буквально, другое слово для type будет class . Когда вы определяете класс, вы по сути определяете свой собственный тип. Точно так же, как 12 является экземпляром целого числа, а "hello world" является экземпляром строки, вы можете создать свой собственный тип, а затем создать экземпляры этого типа. Каждый экземпляр является объектом.

Классы - это просто пользовательские типы

Большинство программ, которые выходят за рамки простой печати строки на дисплее, должны управлять чем-то большим, чем просто числами и строками. Например, вы можете написать программу для работы с изображениями, например, фотошоп. Или, может быть, вы создаете конкурента iTunes и вам нужно манипулировать песнями и коллекциями песен. Или, может быть, вы пишете программу для управления рецептами.

Одна картинка, отдельная песня или один рецепт являются объектами определенного типа. Единственное отличие состоит в том, что вместо того, чтобы ваш объект был типом, предоставляемым языком (например: целые числа, строки и т. Д.), Это то, что вы определяете сами.

1 голос
/ 26 мая 2019

Чтобы углубиться, вам нужно понять модель данных Python .

Но если вы хотите использовать глянцевую шпаргалку stackoverflow, давайте начнем со словаря.(Чтобы избежать циклических определений, давайте просто согласимся, что как минимум словарь является отображением ключей к значениям. В этом случае мы можем даже сказать, что ключи определенно строки .)

def some_method():
    return 'hello world'

some_dictionary = {
    "a_data_key": "a value",
    "a_method_key": some_method,
}

Объект, таким образом, является таким отображением с некоторым дополнительным синтаксическим сахаром, который позволяет вам получить доступ к «ключам» с помощью точечной нотации.

Теперь, есть гораздо больше, чем это,(На самом деле, если вы хотите понять это за пределами Python, я рекомендую Искусство протокола метаобъекта .) Вы должны продолжить с "но что такое экземпляр ?»и "как вы можете делать такие вещи, как итерация для записей в словаре, как это?"и "что такое система типов"?Часть этого описана в прекрасном ответе Скам.

Мы можем поговорить о методах python dunder и о том, как они в основном являются протоколом для реализации нативного поведения, такого как sized (вещи с длиной), сравнимые типы (x

Но поскольку вопрос, по сути, является широким на уровне PhD, я думаю, что я оставлю свой ответ ужасно редуцирующим и посмотрю, хотите ли вы ограничитьвопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...