Heim > Artikel > Backend-Entwicklung > Der Unterschied zwischen Python-Klassenobjekten und Instanzobjekten
Klassenobjekte und Instanzobjekte
Kurze Theorie: (Empfohlenes Lernen: Python-Video-Tutorial)
Klassenobjekte fassen Objekte mit ähnlichen Attributen und Methoden in Klassenobjekten zusammen. Es können verschiedene Instanzobjekte definiert werden, die auf die Attribute und Methoden von Klassenobjekten verweisen.
Instanzobjekte werden auch als instanziierte Objekte bezeichnet. Sie sind nicht abstrakt, sondern ein spezifisches Objekt in einer Klasse von Objekten.
Metaphorisches Verständnis:
Ich glaube, manche Leute finden es etwas verwirrend, deshalb werde ich es hier mit einer Metapher erklären, ich hoffe, Sie können es verstehen. Zunächst müssen Sie verstehen, dass in Python „alles ein Objekt ist“. Persönliches Verständnis:
Klassenobjekte sind wie ein Korb voller „Früchte“. Die Früchte im Korb werden nicht wiederholt, dann gehören die „Früchte“ im Korb zur gleichen Klasse und sind abstrakt, genau wie jemand gesagt hat Wenn Sie „Gib mir Frucht“ sagen, muss Ihre erste Reaktion „Welche Frucht?“ sein, also ist es ungewiss.
Das Instanzobjekt ist, wie der „Apfel“ im Korb, ein spezifisches Objekt, also eine Instanz. Ich glaube, jemand hat zu Ihnen gesagt: „Gib mir einen Apfel“, Sie möchten wahrscheinlich nicht auswählen, welche Frucht
class Main_class_dll(): def __init__(self): dllName = "SessionConnector.dll" dllABSPath = os.path.dirname(os.path.abspath(__file__)) + os.path.sep + dllName self.dll = cdll.LoadLibrary(dllABSPath) self.session_id='' def int_create_(self): self.dll.Init.restype = c_bool sign = self.dll.Init() def Create_Session(self,ip,port): self.dll.CreateSession.argtypes=[c_char_p,c_char_p] #输入参数的格式 self.dll.CreateSession.restype = c_int; #输出参数的格式 self.session_id = self.dll.CreateSession(ip,port); def send_recv(self,buf): time.sleep(2) self.dll.SendSessionMsg.restype = c_bool; self.dll.SendSessionMsg.argtypes=[c_int,c_char_p,c_uint] ret = self.dll.SendSessionMsg(self.session_id, buf, len(buf) + 1); self.dll.RecvSessionMsg.argtypes=[c_int,c_char_p,c_uint,c_int] self.dll.RecvSessionMsg.restype = c_bool; recv_buf = create_string_buffer(1024); ret = self.dll.RecvSessionMsg(self.session_id, recv_buf, 1024, 3000); self.dll.DestroySession.restype = c_bool; ret = self.dll.DestroySession(self.session_id); return recv_buf.value
Ein Klassenobjekt ist ein Objekt, das direkt durch den Klassennamen dargestellt werden kann. Es unterstützt zwei Operationen , direkte Attributverwendung und Instanziierung. Für die Verwendung von Klassenattributen verwenden Sie einfach direkt den Klassennamen.attribute. Für die Verwendung von Klassenmethoden müssen Sie ein Objekt instanziieren und den Objektnamen sich selbst zuweisen, wie unten gezeigt:
class test: data = 1 def __init__(self): self.property=0 def test2(self): print 'hello' if __name__=='__main__': t = test() print test.data print t.data print test.test2 print t.test2() print test.test2(t)
Weitere technische Artikel zu Python finden Sie im Python-Tutorial Kolumne Fang an zu lernen!
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Python-Klassenobjekten und Instanzobjekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!