2016-07-30 27 views
1

1) Warum müssen wir Klasse von Objekt aufrufen?Objekt und Instanzen in Python

Können Sie ein gutes Beispiel geben, wo das Aufrufen von Objekten erforderlich ist. Ich habe unter eins gefunden, aber ich habe es nicht verstanden. In Python 2.7 x sollte wie folgt aussehen

class Foo: 
    pass 

class Bar(Foo): 
    pass 

2) Ich found, dass es in Python 3.x keine Notwendigkeit, ausdrücklich von Objekt abzuleiten ist? Was bedeutet das ? Bedeutet das, dass wir die Klasse Bar (Foo) nicht anrufen müssen? Als Neuling schwer zu verstehen. Bitte erkläre .

3) In Python 2,7

class Boat(): 
    pass 

my_boat = Boat() #instantiate object 

my_boat2 = Boat() #instantiate object 

print(my_boat) 
print(my_boat2) 

< Haupt bietet Boots Instanz bei 0x0000000008DFEC88>

< Haupt bietet Boots Instanz bei 0x0000000008DFECC8>

die Lauf gleicher Code in Python gibt 3.x mir

< Haupt bietet Boot Objekt bei 0x000002406FF8E390>

< Haupt bietet Boot Objekt bei 0x000002406FF8ECF8>

a), also kann ich feststellen, dass Instanz und Objekt sind gleich in Python 3.x? Obwohl nach vielen Lesungen aus verschiedenen Quellen zu verstehen, dass

Instanz ist nur eine Blaupause der Klasse.

Klasse ist auch ein Objekt. Wenn wir eine Klasse instanziieren, ist das ein Objekt.

Alles in Python ist ein Objekt

mich korrigieren, falls mein Verständnis falsch ist. Nach dem obigen Verständnis ist es ziemlich schwer zu verstehen, warum Objekt und Instanz dasselbe sind. Bitte lösche mich hierüber.

Antwort

1

Ich schlage vor, Sie sehen , das Kapitel über objektorientierte Programmierung.

In Zusammenfassung: A Klasse ist der Entwurf, mit dem Objekte gemacht werden. Was Sie in Ihrem ersten Beispiel tun, heißt Vererbung. Dies ist niemals erforderlich und völlig optional.

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


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


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

Aus einem Byte von Python:

Die Klasse Schul in dieser Situation als Basisklasse bekannt ist oder die geordneten Klasse. Die Teacher- und Student-Klassen heißen abgeleitete Klassen oder Unterklassen.

Jetzt jeder Lehrer und jeder Schüler wird ein gewisses Alter haben. Aber wieder ist es nicht notwendig. Sie könnten einfach tun:

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


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

und erhalten Sie die gleichen Ergebnisse ohne Vererbung.

Was Ihre Frage 3a:

Eine Instanz einer Klasse wird als Objekt bekannt. In anderen Sprachen sind das Erstellen eines Objekts und dessen Instanziierung zwei verschiedene Schritte, aber in Python werden diese gleichzeitig ausgeführt, so dass ein Objekt immer auch eine Instanz ist.

Ihr gegenwärtiges Verständnis hat einige Mängel auf:

Instanz nur ein Entwurf der Klasse ist.

Wie gesagt, eine Klasse ist eine Blaupause eines Objekts.

Klasse ist auch ein Objekt. Wenn wir eine Klasse instanziieren, ist das ein Objekt.

Ein Object ist auch eine Instanz . Wenn wir ein Objekt aus einer Klasse erstellen, wird es automatisch instanziiert.

Alles in Python ist ein Objekt

Dies macht keinen Sinn überhaupt machen. Alles in Python basiert auf Objekten, aber darüber müssen Sie sich später Gedanken machen, wenn Sie ein tieferes Verständnis haben.

Ich hoffe, ich könnte Ihnen helfen, ein bisschen besser zu verstehen. Ich schlage vor, Sie werfen einen Blick auf A Byte of Python. Es hat eine wirklich gute Erklärung für objektorientierte Programmierung.

+0

@Redme vielen Dank für die Mühe und erklären Sie das Konzept. Ich werde Ihre Antwort akzeptieren, sobald ich das vorgeschlagene Thema durchgegangen bin und das Konzept besser verstanden habe. Bis dahin weiter beitragen – user110244