Python-- von Grunde auf objektorientierte Entwicklung 3 zu lernen
Taiyuan University of Technology Robotics-Team 20 Lochkarte 11.Tag
1, Klasse Methoden und Klassenattribute
1.1 ist eine spezielle Klasse von Objekten
Python in alles ein Objekt:
- Klasse AAA: definierte Kategorie gehört zu der Klasse Objekt
- obj1 = AAA () zu dem den zugehörigen Instanz - Objekt
- Das Programm läuft, geben Sie das gleiche wird in den Speicher geladen werden ,
- In Python, die Klasse ist ein spezielles Objekt - Klassenobjekt
- Das Programm läuft, das Klassen - Objekt im Speicher, nur eine , die Verwendung einer Klasse kann erstellen eine Reihe von Objektinstanzen
- Zusätzlich zu dem Paket Beispiele von Attributen äußeren und Methoden, Klassenobjekte können auch ihre eigenen Attribute und Methoden
- Klasseneigenschaften
- Klassenmethoden
- Mit dem Klassennamen . Die Art und Weise können Sie Zugriffsklasse Attribut oder Methode ruft die Klasse
1.2 Instanzattribute und Klassenattribute
- Klassenattribut ist ein Klassenobjekt definiert Attribute
- Es wird allgemein aufzeichnen verwendet relevant zu dieser Klasse Feature
- Class - Attribut für nicht Aufzeichnung Eigenschaften des jeweiligen Objekts
Beispiel: Um die Anzahl der Objekte dieser Klasse aufnehmen
class Tool(object):
# 使用赋值语句,定义类属性,记录创建工具对象的总数
count = 0
def __init__(self, name):
self.name = name
# 针对类属性做一个计数+1
Tool.count += 1
# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁锹")
# 知道使用 Tool 类到底创建了多少个对象?
print("现在创建了 %d 个工具" % Tool.count)
1.3 Klassenmethoden und statische Methoden
- Class - Eigenschaft , die für die ist das Klassenobjekt Attributdefinitionen
- Verwendung Zuweisungsanweisungen unter der Klasse Schlüsselwort zu definieren , ein Klassenattribut
- Class - Attribut für die Aufnahme in diese Klasse relevantes Merkmal
- Klassenmethode ist für das Klassenobjekt definierte Methode
- In der Klassenmethode innerhalb können die direkten Zugriff auf Klasseneigenschaften oder invoke anderen Klassenmethoden
die Syntax
@classmethod
def 类方法名(cls):
pass
- Klassenmethode erfordert ein Dekorateur @classmethod identifiziert werden, sagte der Interpreter Dies ist eine Methode der Klasse
- Klassenmethode erster Parameter soll cls sein
- Von welcher Klasse Call - Methode, cls in der Art und Weise ist eine Referenzklasse , das
- Dieser Parameter und das beispielhafte Verfahren von dem ersten Parameter ist eine ähnliche Selbst
- Tipp ein anderer Name sein kann, aber die Gewohnheit, cls mit
- Durch die Klassennamen. Invoke Klassenmethode , beim Aufruf der Methode , müssen Parameter cls passieren
- Innerhalb einer Methode
- Durch cls. Attribut Zugriffsklasse
- Sie können auch cls. Aufrufen von anderen Methoden der Klasse
Beispiele verlangen
- Definieren Sie ein Werkzeug
- Jedes Werkzeug hat seinen eigenen Namen
- Die Nachfrage in - Klasse Nummer der Objektklasse des Verfahrens wird ein show_tool_count der Verpackung, um den Ausgangsstrom dieser Klasse verwendet wird , geschaffen
@classmethod
def show_tool_count(cls):
"""显示工具对象的总数"""
print("工具对象的总数 %d" % cls.count)
Innerhalb der Klassenmethoden können direkt Zugang cls verwendet werden Klasseneigenschaften oder eine Klasse - Methode aufrufen
1.4 statische Methode
- Bei der Entwicklung, wenn in der gewünschten Klasse kapselt ein Verfahren , das:
- Nicht nur nicht brauchen , um Zugriff auf eine Instanz Eigenschaft oder rufen Instanzmethode
- Auch brauchen Sie nicht auf die Zugriff auf Klasseneigenschaften oder durch den Aufruf der Klassenmethode
- Diese Zeit kann dieses Verfahren als eine verpackt werden statische Methode
die Syntax
@staticmethod
def 静态方法名():
pass
- Statische Methoden benötigt decorator @staticmethod identifiziert werden, sagte der Interpreter diese eine statische Methode ist
- Durch die Klassennamen. Rufen Sie die statische Methode
class Dog(object):
# 狗对象计数
dog_count = 0
@staticmethod
def run():
# 不需要访问实例属性也不需要访问类属性的方法
print("狗在跑...")
def __init__(self, name):
self.name = name
2, abnormal
- Programm zur Laufzeit, wenn das Python - Interpreter trifft einen Fehler, Ausführung Stop - Programms, und Aufforderungen einiger falschen Informationen, die nicht normal ist
- Das Programm stoppt die Ausführung und eine Fehlermeldung diese Aktion, rufen wir in der Regel: throw (raise) abnormal
2.1 fangen die Ausnahme
- Programmentwicklung, wenn die Ausführung von Code nicht korrekt bestimmt werden , kann die Try (Versuch) erhöhen , um die Ausnahme abfangen
- Fangen Ausnahmen einfachste Syntax:
try:
尝试执行的代码
except:
出现错误的处理
- versuchen , versuchen , versuchen , den Code unten, unsicher zu schreiben , ob der Code normal ausgeführt werden
- ausnehmen , wenn nicht , Schreibcode unten Versuch fehlschlägt
Die Art des Fehlers Trapping
- Während der Programmausführung, beim Betrieb auftreten kannst verschiedene Arten von Ausnahmen , und die Notwendigkeit , für verschiedene Arten von Ausnahmen , reagiert unterschiedlich , diesmal müssen wir die Art des Fehlers erfassen
- Die Syntax lautet wie folgt:
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except (错误类型2, 错误类型3):
# 针对错误类型2 和 3,对应的代码处理
pass
except Exception as result:
print("未知错误 %s" % result)
- Wenn das Python - Interpreter eine Ausnahme auslöst , das erste Wort in der letzten Zeile der Fehlermeldung, Typ falsch ist
Erfassung unbekannter Fehler
- Bei der Entwicklung, alle möglichen Fehler zu antizipieren , oder haben einige Schwierigkeiten
- Wenn Sie das Programm wollen ein Fehler unabhängig auftritt , wird nicht , weil Python - Interpreter eine Ausnahme wirft beendet wurde , können Sie eine weitere hinzufügen , außer
Die Syntax lautet wie folgt:
except Exception as result:
print("未知错误 %s" % result)
Abnormal erfassen die vollständige Syntax
- Bei der tatsächlichen Entwicklung, um mit komplexen Anomalien umgehen zu können, abnormal vollständige Syntax lautet wie folgt:
Tipps:
- Für die vollständige Syntax von Szenarien in der Follow-up-Studie mit konkreten Fällen kombiniert wird besser verstanden,
- Jetzt gibt es einen ersten Eindruck zu dieser grammatikalischen Struktur
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 针对错误类型2,对应的代码处理
pass
except (错误类型3, 错误类型4):
# 针对错误类型3 和 4,对应的代码处理
pass
except Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
print("无论是否有异常,都会执行的代码")
- nur Code sonst wenn es wird keine Abnormalität ausgeführt
- schließlich, ob es eine Ausnahme-Code, der ausgeführt wird
- Vor der Ausübung eines vollständigen Erfassung abnormaler Code ist wie folgt
try:
num = int(input("请输入整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except ZeroDivisionError:
print("除 0 错误")
except Exception as result:
print("未知错误 %s" % result)
else:
print("正常执行")
finally:
print("执行完成,但是不保证正确")
2.2 anomale Übertragung
- Anomale Übertragung - wenn die Funktion / Methode Ausführung Ausnahme auftritt , wird es die Ausnahme übergeben an die Funktion / Methode Gesprächspartner
- Wenn der Transfer in das Hauptprogramm , noch keinen Exception - Handler , wird das Programm beendet
Prompt
- In der Entwicklung kann in der Hauptfunktion erhöhen Anomalien capture
- Die anderen Funktionsaufrufe in der Hauptfunktion, solange die abnormal, wird zu den wichtigsten Funktion übergeben werden Anomalien erfasst in
- Dadurch entfällt die Notwendigkeit , in dem Code , um die Anzahl der zu erhöhen Ausnahme Fallen , sauberen Code , um sicherzustellen ,
Nachfrage
- Die demo1 definierte Funktion () fordert den Benutzer auf und gibt eine ganze Zahl
- Definierte Funktionen demo2 () Aufruf demo1 ()
- Demo2 Anruf in der main ()
def demo1():
return int(input("请输入一个整数:"))
def demo2():
return demo1()
try:
print(demo2())
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
2.3 löst eine Ausnahme aus,
- In Entwicklung, zusätzlich zu Codeausführung Fehler Python - Interpreter führt als eine Ausnahme
- Sie können auch die Initiative ergreifen , eine Ausnahme anwendungsspezifische Geschäftsanforderungen zu werfen
Werfen Sie eine Ausnahme
- Python ist eine Ausnahmeklasse Ausnahme vorgesehen
- Bei der Entwicklung, wenn erfüllen spezifische Geschäftsanforderungen, hoffen wir, eine Ausnahme zu werfen, können Sie:
- Erstellen Sie ein Objekt von Ausnahme
- Benutze das Stichwort raise geworfen Objekte