Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Klassen und Attribute

Einführung in Klassen und Attribute

巴扎黑
巴扎黑Original
2017-07-21 14:14:241366Durchsuche

1. Übersicht

1. Klasse definieren (Klasse Dog(object)) --> Instanzobjekt (d )

2. __init__() Konstruktor

3. self.name = name Klassenattribute, Mitgliedsvariablen

4 >

2. Auf Klasseneigenschaften zugreifen

class Role(object):
    def __init__(self, name, role, weapon, life_value=100, money=15000):
        self.name = name
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
        self.money = money

    def shot(self):
        print("%s is shooting..." % self.name)

    def got_shot(self):
        print("ah...,%s got shot..." % self.name)

    def buy_gun(self, gun_name):
        print("%s just bought %s" % (self.name,gun_name))


r1 = Role('Alex', 'police', 'AK47')  # 生成一个角色
r2 = Role('Jack', 'terrorist', 'B22')   # 生成一个角色
 

2.1 Auf Klasseneigenschaften zugreifen Methode

Wir verwenden das Instanzobjekt . Eigenschaften/Methoden für den Zugriff auf

r1.shot()    #  调用shot 方法
r2.buy_gun('B13')  # 调用 buy_gun的方法并传参
print(r1.role)   # 打印类的属性

# 输出

Alex is shooting...
Jack just bought B13
police

 2.1 Ändern Sie die Eigenschaften des Objekts

Im obigen Beispiel haben wir die Waffe für den Charakter r2 geändert, nämlich B22 --> B13. Aber tatsächlich, wenn wir die Waffenattribute des Charakters r2 nennen, werden wir feststellen, dass sich seine Waffe nicht geändert hat:

r2.buy_gun('B13')
print(r2.weapon)

# 输出
Jack just bought B13
B22       # 可以发现武器依然是 B22
Tatsächlich können wir die Attribute von direkt ändern das Objekt beim Kauf der Waffe:

def buy_gun(self, gun_name):
      print("%s just bought %s" % (self.name, gun_name))
      self.weapon = gun_name    # 在方法内改变属性



r2.buy_gun('B13')
print(r2.weapon)

#输出
Jack just bought B13
B13    # 可以发现武器已经改变
 

3. Private Attribute

3.1 private Attribute

Sobald die Attribute einer Klasse als private Attribute definiert sind, können sie nicht mehr extern aufgerufen oder beliebig geändert werden. Private Eigenschaften können nur innerhalb der Klasse verwendet werden.

class Person(object):

    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')
print(p1.name)
print(p1.__address)   # 访问私有属性

# 输出

Bigberg
  File "G:/python/untitled/study6/类的私有属性.py", line 17, in <module>
    print(p1.__address)
AttributeError: &#39;Person&#39; object has no attribute &#39;__address&#39;
Das Ergebnis der Operation ist, dass auf den Attributnamen zugegriffen werden kann, beim direkten Zugriff auf das private Attribut self.__address wird jedoch ein Fehler gemeldet. Wenn Sie jedoch andere Methoden verwenden, können Sie trotzdem darauf zugreifen.

3.2. Die get-Methode greift auf private Eigenschaften zu

Auf private Eigenschaften kann nicht direkt von außerhalb zugegriffen werden, sie können jedoch innerhalb der Klasse aufgerufen werden. So können wir eine Methode definieren, um private Eigenschaften abzurufen.

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(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)
res = p1.get_private()
print(res)

# 输出
hz
 

 

3.3 Erzwungener Zugriff auf private Attribute

Wir können auch eine Methode verwenden, um den Zugriff auf private Attribute zu erzwingen Attribute und ändern sogar den Wert privater Eigenschaften. Methode: Objektname._Klassenname__Attributname.

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(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)

print(p1._Person__address)   # 访问私有属性

print("----change----")
p1._Person__address = &#39;BJ&#39;    # 修改私有属性
print(p1._Person__address)

#输出
hz
----change----
BJ
 

Kurse sind wichtige Werkzeuge zur Vereinfachung und Optimierung von Anwendungen. 1. Vererbung: die Fähigkeit von Unterklassen, die Eigenschaften von übergeordneten Klassen zu erben. Es verkörpert und erweitert die gemeinsame Nutzung objektorientierter Programmiermethoden und ermöglicht es Objekten desselben Typs, Daten und Programmcode gemeinsam zu nutzen, wodurch die Wiederverwendbarkeit von Programmen verbessert wird. Die übergeordnete Klasse ist eine Klasse, die weiter definiert werden kann, um neue Klassen abzuleiten, und die Unterklasse ist eine neue Klasse, die durch die Verwendung anderer Klassen als Ausgangspunkt und die Definition spezifischerer Merkmale erstellt wird.
2. Polymorphismus: Einige verwandte Klassen enthalten Methoden mit demselben Namen, der Inhalt der Methoden kann jedoch unterschiedlich sein. Welcher aufgerufen werden soll, wird zur Laufzeit anhand der Klasse des Objekts bestimmt. Dieselbe Nachricht kann zu unterschiedlichen Aktionen führen, wenn sie von verschiedenen Objekten empfangen wird.
3. Abstraktion: Extrahieren Sie die charakteristischen Merkmale einer Klasse oder eines Objekts, ohne andere Informationen über die Klasse oder das Objekt zu verarbeiten.

4. Zusammenfassung

1. Private Attribute definieren: self.__private_attr_name = private_attr_name

2 Auf private Attribute zugreifen: Objektname._Klassenname__Attributname (d._dog__sex)

3. Externen schreibgeschützten Schnittstellenzugriff bereitstellen:

def get_sex(self):

return self.__sex

Das obige ist der detaillierte Inhalt vonEinführung in Klassen und Attribute. 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