Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen Python-Klassenobjekten und Instanzobjekten

Der Unterschied zwischen Python-Klassenobjekten und Instanzobjekten

(*-*)浩
(*-*)浩Original
2019-07-05 10:21:467082Durchsuche

Klassenobjekte und Instanzobjekte

Der Unterschied zwischen Python-Klassenobjekten und Instanzobjekten

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn