Python-Klasse (Python-Lernnotiz ⑦)

Informationen zu Bereichen und Namespaces

Namensraum

Punkt

Umfang

Punkt

Beispiel für Umfang und Namespace


def scope_test():
    def do_local():
        spam = "local spam"
    def do_nonlocal():
        nonlocal spam
        spam = "nonlocal spam"
    def do_global():
        global spam
        spam = "global spam"
    spam = "test spam"
    
    do_local()
    print("After local assignment:", spam)
    # After local assignment: test spam
    
    do_nonlocal()
    print("After nonlocal assignment:", spam)
    # After nonlocal assignment: nonlocal spam
    
    do_global()
    print("After global assignment:", spam)
    # After global assignment: nonlocal spam

scope_test()
print("In global scope:", spam)
# In global scope: global spam

Klassendefinition

Syntax der Klassendefinition

Klassendefinition


class className:
    <Satz 1>
    .
    .
    .
    <Satz N.>

Punkt

Klassenobjekt

Punkt

Attributreferenz


class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'

Klasseninstanziierung


x = MyClass()

__init__()Funktion


    def __init__(self):
        self.data = []

Klasseninstanziierung(Mit Argument)


class Human:
    def __init__(self, height, weight):
        self.height = height
        self.weight = weight

x = Human(165, 55)
print('height:', x.height, 'weight:', x.weight)
# height: 165 weight: 55

Instanzobjekt

Punkt

Referenz von Datenattributen und -methoden


class MyClass:
    def __init__(self):
        pass
    def f(self, word):
        print(word)
        
x = MyClass()

#Datenattribute hinzufügen / referenzieren
x.counter = 1 #Datenattribute müssen nicht im Voraus deklariert werden
while x.counter < 10:
    x.counter = x.counter * 2
print(x.counter) # 16
del x.counter

#Methodenreferenz
x.f("hello kawauso")

Methodenobjekt

Speichern Sie das Methodenobjekt in einer Variablen


xf = x.f
xf('hello kawauso again') #Ausgabe: hello kawauso again

Klassenvariablen und Instanzvariablen

Punkt

Beispiele für Klassen- und Instanzvariablen



class Dog:
    
    kind = 'Shiba' #Klassenvariable
    
    def __init__(self, name):
        self.name = name #Instanzvariable
        
        
taro = Dog('Taro')
jiro = Dog('Jiro')

#Verweis auf Klassenvariablen
print(taro.kind) #Shiba
print(jiro.kind) #Shiba

#Verweis auf Instanzvariablen
print(taro.name) #Taro
print(jiro.name) #Jiro

Verschiedene andere

Punkt

Erbe

Klassenvererbung

Punkt

Vererbungsprobe


class base():
    def a(self):
        print('Ich stütze mich.ist ein.base.Rufen Sie b an')
        self.b()
    def b(self):
        print('Ich stütze mich.b.der.Überschrieben von b')

class der(base):
    def b(self):
        print('Ich der.b.')


b = base()
d = der()

b.a()
#Ich stütze mich.ist ein.base.Rufen Sie b an
#Ich stütze mich.b.der.Überschrieben von b

d.a()
#Ich stütze mich.ist ein.base.Rufen Sie b an
#Ich der.b.

Mehrfachvererbung

Punkt

Private Variablen

Punkt

Name Mandaring Beispiel


class Mapping:
    def __init__(self, iterable):
        self.items_list = []
        self.__update(iterable)

    def update(self, iterable):
        for item in iterable:
            self.items_list.append(item)

    __update = update #↑ Update()Private Kopie der Methode

class MappingSubclass(Mapping):
    # update()Beim Anbieten einer neuen Signatur von
    #Vorhandenen__init__()Kann verwendet werden, ohne zu zerstören
    def update(self, iterable):
        for item in zip(keys, values):
            self.items_list.append(item)

Andere Dinge

class Employee:
    pass

john = Employee()

john.name = 'Jhon Doe'
john.dept = 'computer lab'
john.salary = 1000

Ausnahmen sind auch Klassen

Punkt

Iterator

Punkt

__iter__()Wann__next__()


# __next__()Gibt ein Objekt mit einer Methode zurück__iter__()Definieren Sie eine Methode
#Bereits__next()__In der Klasse definiert durch__iter__()Kehre einfach selbst zurück
class Reverse:
    def __init__(self, data):
        self.data = data
        self.index = len(data)
    def __iter__(self):
        return self
    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index - 1
        return self.data[self.index]

rev = Reverse('spam')
iter(rev)

for char in rev:
    print(char)

# m
# a
# p
# s

Generator

Punkt

Generator Beispiel


def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]

for char in reverse('golf'):
    print(char)

# f
# l
# o
# g

Generatortyp

Punkt

Beispiel für einen Generatorausdruck


sum(i*i for i in range(10)) #Quadratische Summe

xvec = [10, 20, 30]
yvec = [7, 5, 3]
sum(x*y for x,y in zip(xvec, yvec)) #Innenprodukt

from math import pi, sin
#Sünde Tabelle
sine_table = {x: sin(x*pi/180) for x in range(0, 91)}

#Einzigartige Wörter auf der Seite
unique_words = set(word for line in page for word in line.split())

#Alumni-Präsident
valedictorian = max((student.gpa, student.name) for student in graduates)

data = 'golf'
list(data[i] for i in rage(len(data)-1, 1, -1))

Recommended Posts

Python-Klasse (Python-Lernnotiz ⑦)
Python-Modul (Python-Lernnotiz ④)
[Lernnotiz] Grundlagen des Unterrichts mit Python
Behandlung von Python-Ausnahmen (Python-Lernnotiz ⑥)
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python lernen
Python-Memo
Python-Memo
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Abschnittsplanung Lernnotiz ~ von Python ~
"Scraping & maschinelles Lernen mit Python" Lernnotiz
LPIC201 Studiennotiz
[Python] -Klasse, Instanz
[Python] Lernnotiz 1
"Kanrika" die Python-Klasse
Python-Anfänger-Memo (9.2-10)
Python-Lernnotizen
Django Lernnotiz
Über Python, Klasse
Python-Anfänger-Memo (9.1)
Python-Lernausgabe
Python-Lernseite
★ Memo ★ Python Iroha
Python-Lerntag 4
[Python] EDA-Memo
Python Deep Learning
Python 3-Operator-Memo
Python-Lernen (Ergänzung)
Deep Learning × Python
[Memo] Maschinelles Lernen
[Mein Memo] Python
Python3-Metaklassen-Memo
Python-Klasse, Instanz
[Python] Grundkarten-Memo
Python-Anfänger-Memo (2)
Python-Lernnotizen
# Python-Grundlagen (Klasse)
[Python] Numpy Memo
Python & Machine Learning Study Memo: Vorbereitung der Umgebung
Python-Zahlen, Zeichenfolgen, Listentypen (Python-Lernnotiz ①)
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
Python-Standardbibliothek: zweite Hälfte (Python-Lernnotiz ⑨)
Python & Machine Learning Study Memo ③: Neuronales Netz
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Python & Machine Learning Study Memo ⑥: Zahlenerkennung
Python-Standardbibliothek: Erste Hälfte (Python-Lernnotiz ⑧)
Python-Syslog-Wrapper-Klasse
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 9) MultiLayerNet-Klasse
Python lernen mit ChemTHEATER 03
Python OpenCV Installation (Memo)
"Objektorientiert" mit Python gelernt
Fallklasse in Python
Erweitertes Lernen 1 Python-Installation
Python lernen mit ChemTHEATER 05-1
Python: Deep Learning-Praxis