2016-07-30 8 views
1

1) Почему нам нужно вызвать класс из Object?Объект и экземпляры в Python

Можете ли вы привести хороший пример того, когда требуется вызов из объекта. Я нашел ниже один, но не понял. В Python 2.7 х это должно выглядеть, как показано ниже

class Foo: 
    pass 

class Bar(Foo): 
    pass 

2) Я found, что в Python 3.x нет необходимости выводить явно от объекта? Что это значит ? Означает ли это, что нам не нужно вызывать класс Bar (Foo)? Трудно понять как новичок. Пожалуйста, объясни .

3) В Python 2.7

class Boat(): 
    pass 

my_boat = Boat() #instantiate object 

my_boat2 = Boat() #instantiate object 

print(my_boat) 
print(my_boat2) 

< Основной .Boat экземпляр на 0x0000000008DFEC88>

< основной .Boat например при 0x0000000008DFECC8>

Запуск тот же код в Python 3.x дает мне

< главный .Boat объект на 0x000002406FF8E390>

< главный .Boat объекта в 0x000002406FF8ECF8>

а) Так я могу сделать вывод, что instance и Object одинаковы в Python 3.x? Хотя после многих чтений из разных источников я понимаю, что

Экземпляры - это всего лишь план класса.

Класс также является объектом. Когда мы создаем экземпляр класса, это объект.

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

Поправьте меня, в случае, если я понимаю неправильно. Итак, следуя приведенному выше пониманию, довольно сложно понять, почему Object и instance - одно и то же. Пожалуйста, очистите меня от этого.

ответ

1

Предлагаю вам взглянуть на A Byte of Python, главу об объектно-ориентированном программировании.

В Резюме: класс является план, по которому объекты сделаны. То, что вы делаете в первом примере, называется inheritance. Это никогда не требуется и полностью необязательно.

class SchoolMember: 
    '''Represents any school member.''' 
    age = some_age 
    pass 


class Teacher(SchoolMember): 
    '''Represents a teacher.''' 
    pass 


class Student(SchoolMember): 
    '''Represents a student.''' 
    pass 

С Байт Питона:

Класс SchoolMember в этой ситуации известен как базовый класс или суперкласса. Классы Учителя и Студента называются производными классами или подклассами .

Теперь каждый учитель и каждый студент будет иметь возраст. Но опять же, это не важно. Вы можете просто:

class Teacher(): 
    '''Represents a teacher.''' 
    age = some_age 
    pass 


class Student(): 
    '''Represents a student.''' 
    age = some_age 
    pass 

и получить те же результаты без наследования.

Что касается Вашего вопроса 3a:

Экземпляр класса известен как объект. На других языках, создающих объект и создающих экземпляр, это два разных шага, но в python они выполняются одновременно, поэтому объект всегда будет экземпляром.

Ваше текущее понимание имеет некоторые недостатки:

Instance просто план класса.

Как я уже сказал, класс является планом объекта.

Класс также является объектом. Когда мы создаем экземпляр класса, это объект.

Объект также экземпляра. Когда мы создаем объект из класса, он автоматически создается.

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

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

Надеюсь, я мог бы помочь вам понять немного лучше. Я действительно предлагаю вам взглянуть на A Byte of Python. Это действительно хорошее объяснение объектно-ориентированного программирования.

+0

@Redme благодарит много за то, что он прилагает усилия и объясняет концепцию. Я отвечу на ваш ответ, пройдя через предложенную тему и пойму концепцию лучше. До тех пор продолжайте – user110244