Inhaltsverzeichnis
1. Konzept " >1. Konzept
2. Attribute" >2. Attribute
2.1 Mitgliederattribute" >2.1 Mitgliederattribute
2.2 Öffentliche Attribute " >2.2 Öffentliche Attribute
3. Eigenschaften öffentlicher Attribute " >3. Eigenschaften öffentlicher Attribute
3.1 Aufrufen und Ändern öffentlicher Eigenschaften in einer einzelnen Instanz " >3.1 Aufrufen und Ändern öffentlicher Eigenschaften in einer einzelnen Instanz
Heim Backend-Entwicklung Python-Tutorial Einführung in öffentliche Eigenschaften von Klassen

Einführung in öffentliche Eigenschaften von Klassen

Jul 17, 2017 pm 03:58 PM
In öffentlichem Besitz 属性

1. Konzept

Wir haben bereits die privaten Attribute einer Klasse erwähnt, auf die nicht direkt in der Klasse zugegriffen werden kann. Was aber, wenn Eigenschaften, auf die direkt zugegriffen werden kann, öffentliche Eigenschaften sind? Nicht wirklich. Die Eigenschaften im __init__()-Konstruktor sind grundsätzlich für die Außenwelt zugänglich, sie sind jedoch keine öffentlichen Eigenschaften. Was sind also öffentliche Attribute?

Definition: Bezieht sich auf Eigenschaften, auf die alle zu dieser Klasse gehörenden Objekte zugreifen können, sogenannte öffentliche Eigenschaften.

2. Attribute

2.1 Mitgliederattribute

class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name    #  成员属性,属于某个实例对象
        self.job = job
        self.phone = phone
        self.__address = address

    def get_private(self):
        return self.__address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')
Nach dem Login kopieren
print(p1.job, p2.job)

# 输出
Doctor Police
Nach dem Login kopieren

Wir sind Hier sind zwei Objekte unter der Person-Klasse definiert, p1 und p2. Offensichtlich haben wir für p1 keine Möglichkeit, auf das Jobattribut von p2, also Police, zuzugreifen. Dann werden Attribute wie self.name im Konstruktor __init__() als Mitgliedsattribute bezeichnet.

2.2 Öffentliche Attribute

class Person(object):
    nationality = 'CN'   # 定义公有属性

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.address = address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')

print(p1.nationality)
print(p2.nationality)

# 输出

CN
CN
Nach dem Login kopieren

Bei öffentlichen Attributen handelt es sich um den Wert, den alle darauf zugreifenden Instanzobjekte erhalten Dasselbe.

 

3. Eigenschaften öffentlicher Attribute

Wir können nicht nur auf öffentliche Attribute zugreifen, sondern diese auch ändern.  

class Person(object):
    nationality = 'CN'   # 定义公有属性

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.address = address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')

print(Person.nationality)  # 调用 公有属性
Person.nationality = 'us'   # 改变 公有属性
print(Person.nationality)

#输出

CN 
us
Nach dem Login kopieren

 

3.1 Aufrufen und Ändern öffentlicher Eigenschaften in einer einzelnen Instanz

# 依据上例

print("--------Befoer change---------")
print(Person.nationality)
print(p1.nationality)
print(p2.nationality)

print("--------after change---------")
print(Person.nationality)
p1.nationality = 'JP'
print(p1.nationality)
print(p2.nationality)


# 输出
Nach dem Login kopieren

--------Vor der Änderung---------
CN
CN
CN
--------nach der Änderung------ ---
US
JP
US

Wir können p1 sehr gut verstehen, bevor wir es ändern, da jeder das öffentliche Attribut Nationalität der Klasse Person nennt, also p1, The Die Nationalitätsattribute von p2 sind gleich, beide sind „CN“. Aber warum hat sich das Nationalitätsattribut von p2 nicht geändert, nachdem p1 das öffentliche Attribut geändert hat? enthält auch die öffentlichen Eigenschaften dieser Klasse. Wenn die anfängliche Instanz p1 das Nationalitätsattribut der Klasse Person aufruft, verweist sie direkt auf die Speicheradresse der Nationalität in der Klasse, anstatt ein neues Attribut namens Nationalität hinzuzufügen.

Wie unten gezeigt:

Dies kann erklären, warum sich auch p2 ändert, wenn die Nationalität in der Personenklasse in „US“ geändert wird. Weil es direkt auf den Wert im Speicher verweist.

 
print(id(Person.nationality))
print(id(p1.nationality))
print(id(p2.nationality))
print(Person.nationality, p1.nationality, p2.nationality)

#输出
1751236836128
1751236836128
1751236836128
CN CN CN
Nach dem Login kopieren

Nachdem p1 das Nationalitätsattribut direkt zugewiesen hat, fügt Instanz p1 tatsächlich eine neue Mitgliedsvariable namens Nationalität zu sich selbst hinzu. Es ist nur so, dass ihre Namen gleich sind, aber es gibt keinen Zusammenhang zwischen den beiden und sogar die Speicheradressen sind unterschiedlich.

p1.nationality = 'JP'
Nach dem Login kopieren

p1.nationality='JP' ändert also nicht die öffentlichen Attribute der Person-Klasse, sondern erstellt ein neues Mitgliedsattribut für sich selbst, sodass die Änderung von p1 öffentlich ist Eigenschaften der Klasse haben keine Auswirkung.

# p1.nationality = 'JP'
print(id(Person.nationality))
print(id(p1.nationality))
print(id(p2.nationality))
print(Person.nationality, p1.nationality, p2.nationality)

#输出
2434579585096
2434579585152
2434579585096
US JP US
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in öffentliche Eigenschaften von Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie erhalte ich ganzzahlige Literaleigenschaften in Python ohne SyntaxError? Wie erhalte ich ganzzahlige Literaleigenschaften in Python ohne SyntaxError? Aug 20, 2023 pm 07:13 PM

Um das Attribut „intliteral“ anstelle von „SyntaxError“ zu erhalten, verwenden Sie ein Leerzeichen oder eine Klammer

Wie benenne ich Eigenschaften von JSON mit Gson in Java um? Wie benenne ich Eigenschaften von JSON mit Gson in Java um? Aug 27, 2023 pm 02:01 PM

Die Gson@SerializedName-Annotation kann in JSON serialisiert werden und den angegebenen Namenswert als Feldnamen haben. Diese Annotation kann jede FieldNamingPolicy überschreiben, einschließlich der Standard-Feldbenennungsrichtlinie, die möglicherweise auf der Gson-Instanz festgelegt wurde. Mithilfe der GsonBuilder-Klasse können verschiedene Benennungsstrategien festgelegt werden. Syntax@Retention(value=RUNTIME)@Target(value={FIELD,METHOD})public@interfaceSerializedNameExample importcom.google.gson.annotations.*;

Pythons dir()-Funktion: Zeigen Sie die Eigenschaften und Methoden eines Objekts an Pythons dir()-Funktion: Zeigen Sie die Eigenschaften und Methoden eines Objekts an Nov 18, 2023 pm 01:45 PM

Dir()-Funktion von Python: Eigenschaften und Methoden eines Objekts anzeigen, spezifisches Codebeispiel erforderlich Zusammenfassung: Python ist eine leistungsstarke und flexible Programmiersprache und ihre integrierten Funktionen und Tools bieten Entwicklern viele praktische Funktionen. Eine der sehr nützlichen Funktionen ist die Funktion dir(), die es uns ermöglicht, die Eigenschaften und Methoden eines Objekts anzuzeigen. In diesem Artikel wird die Verwendung der Funktion dir() vorgestellt und ihre Funktionen und Verwendungen anhand spezifischer Codebeispiele demonstriert. Text: Die dir()-Funktion von Python ist eine integrierte Funktion.

Was tun, wenn die Eigenschaften der Win11-Festplatte unbekannt sind? Was tun, wenn die Eigenschaften der Win11-Festplatte unbekannt sind? Jul 03, 2023 pm 04:17 PM

Was soll ich tun, wenn die Festplatteneigenschaften von Win11 unbekannt sind? Kürzlich stellten Win11-Benutzer fest, dass das System bei der Verwendung ihres Computers einen Festplattenfehler auslöste. Und wie kann man es lösen? Viele Freunde wissen nicht, wie man im Detail vorgeht. Der Editor hat unten die Schritte zur Behebung des Win11-Festplattenfehlers zusammengestellt. Schritte zur Behebung des Win11-Festplattenfehlers 1. Drücken Sie zunächst die Tastenkombination Win+E auf der Tastatur oder klicken Sie auf den Datei-Explorer in der Taskleiste. 2. Suchen Sie in der rechten Seitenleiste des Datei-Explorers die Seite und klicken Sie mit der rechten Maustaste auf „Lokal“. Wählen Sie im sich öffnenden Menüelement „Datenträger (C :)“ die Option „Eigenschaften“. 3. Wechseln Sie im Fenster „Eigenschaften des lokalen Datenträgers (C:)“ zu „Extras“.

Bottom-Attributsyntax in CSS Bottom-Attributsyntax in CSS Feb 21, 2024 pm 03:30 PM

Syntax und Codebeispiele für das Bottom-Attribut in CSS In CSS wird das Bottom-Attribut verwendet, um den Abstand zwischen einem Element und dem Boden des Containers anzugeben. Es steuert die Position eines Elements relativ zum unteren Rand seines übergeordneten Elements. Die Syntax des unteren Attributs lautet wie folgt: element{bottom:value;} wobei element das Element darstellt, auf das der Stil angewendet werden soll, und value den festzulegenden unteren Wert darstellt. Der Wert kann ein bestimmter Längenwert sein, z. B. Pixel

Welche Rolle spielt das pageXOffset-Attribut in JavaScript? Welche Rolle spielt das pageXOffset-Attribut in JavaScript? Sep 16, 2023 am 09:17 AM

Wenn Sie die Pixel ermitteln möchten, um die das Dokument von der oberen linken Ecke des Fensters gescrollt wird, verwenden Sie die Eigenschaften pageXoffset und pageYoffset. Verwenden Sie pageXoffset für horizontale Pixel. Beispiel Sie können versuchen, den folgenden Code auszuführen, um zu lernen, wie Sie das pageXOffset-Attribut in JavaScript verwenden – Live-Demonstration <!DOCTYPEhtml><html> <head> <style> &amp

Einführung in die Eigenschaften von Hearthstones Despair Thread Einführung in die Eigenschaften von Hearthstones Despair Thread Mar 20, 2024 pm 10:36 PM

Thread of Despair ist eine seltene Karte in Blizzard Entertainments Meisterwerk „Hearthstone“ und kann im Kartenpaket „Wizbane's Workshop“ erhalten werden. Kann 100/400 arkane Staubpunkte verbrauchen, um die Normal-/Goldversion zu synthetisieren. Einführung in die Eigenschaften von Hearthstones Faden der Verzweiflung: Er kann mit einer Chance in Wizbanes Werkstattkartenpaket erhalten oder auch durch arkanen Staub synthetisiert werden. Seltenheit: Selten Typ: Zauber Klasse: Todesritter Mana: 1 Wirkung: Verleiht allen Dienern ein Todesröcheln: Fügt allen Dienern 1 Schaden zu

Methoden und Beispiele zum dynamischen Hinzufügen von Attributen mithilfe der Vue.set-Funktion Methoden und Beispiele zum dynamischen Hinzufügen von Attributen mithilfe der Vue.set-Funktion Jul 24, 2023 pm 07:22 PM

Methoden und Beispiele für die Verwendung der Vue.set-Funktion zum dynamischen Hinzufügen von Eigenschaften Wenn wir in Vue eine Eigenschaft dynamisch zu einem vorhandenen Objekt hinzufügen möchten, verwenden wir normalerweise die Vue.set-Funktion. Die Vue.set-Funktion ist eine von Vue.js bereitgestellte globale Methode, die beim Hinzufügen von Eigenschaften reaktionsschnelle Aktualisierungen gewährleisten kann. In diesem Artikel wird die Verwendung von Vue.set vorgestellt und ein konkretes Beispiel bereitgestellt. Erstens verwenden wir in Vue normalerweise die Datenoption, um reaktionsfähige Daten zu deklarieren.

See all articles