Meta tags:
description= Python-Kapselung erklärt: öffentliche, geschützte und private Member, Name Mangling sowie Getter/Setter mit @property.;
Headings (most frequently used words):
kapselung, und, member, warum, private, name, mangling, getter, setter, mit, property, einfacher, unterstrich, python, wichtig, ist, zugriffsebenen, public, protected, ein, vollständiges, beispiel, benutzerkonto, vs, andere, oop, säulen, kurzreferenz, übungen, öffentliche, geschützte, doppelter, __, vererbung, validierung, hinzufügen, gegenüber, einfachen, gettern, settern, bevorzugen,
Text of the page (most frequently used words):
#python (76), self (64), def (27), und (26), die (23), ist (22), property (20), ein (18), der (18), print (17), kopieren (16), lernen (15), das (15), eine (15), password (14), kapselung (14), sie (14), return (14), celsius (14), matplotlib (14), name (13), public (13), von (13), klasse (13), mysql (13), mit (12), private (12), den (12), __init__ (12), class (12), mongodb (12), setter (11), radius (11), code (10), mangling (10), wird (10), nicht (10), methoden (10), attribute (10), owner (10), protected (9), attribut (9), unterstrich (9), auf (8), _balance (8), value (8), listen (8), für (7), html (7), lesen (7), balance (7), strings (7), elemente (7), alle (6), getter (6), klassen (6), was (6), wenn (6), nur (6), daten (6), aufrufer (6), werden (6), _login_attempts (6), login (6), ohne (6), temperature (6), _celsius (6), oder (6), member (6), string (6), w3docs (5), tools (5), übungen (5), beispiel (5), außerhalb (5), interne (5), zugreifen (5), diese (5), vererbung (5), intern (5), user (5), einer (5), kann (5), einem (5), wie (5), child (5), base (5), dies (5), bankaccount (5), __pin (5), erstellen (5), tutorial (5), tuples (5), formatter (5), color (5), über (4), json (4), generator (4), andere (4), oop (4), säulen (4), warum (4), polymorphismus (4), verwendung (4), führender (4), schnittstelle (4), sind (4), __hash (4), username (4), account (4), wrong (4), the (4), einen (4), fahrenheit (4), hinzufügen (4), __secret (4), __count (4), acc (4), amount (4), öffentliche (4), dateien (4), entfernen (4), erste (4), schritte (4), regression (4), dictionaries (4), set (4), listenelemente (4), durchlaufen (4), entwickler (3), encoder (3), editor (3), quizze (3), php (3), javascript (3), css (3), zugriffsebenen (3), wichtig (3), this (3), abstrakte (3), zugriff (3), konvention (3), signalisiert (3), einzelner (3), zugänglich (3), aber (3), siehe (3), eines (3), später (3), geändert (3), __password_hash (3), könnte (3), jeder (3), bad (3), alice (3), hash (3), may (3), weiterhin (3), sich (3), valueerror (3), works (3), man (3), einfachen (3), aufrufenden (3), ändern (3), löst (3), attributeerror (3), einfacher (3), bleibt (3), schreiben (3), reveal_child (3), _child__secret (3), reveal (3), namen (3), verwendet (3), können (3), but (3), increment (3), unterklassen (3), doppelter (3), außen (3), dass (3), and (3), darauf (3), geschützte (3), keine (3), kontostand (3), objekts (3), variablen (3), sets (3), italiano (2), português (2), español (2), français (2), русский (2), deutsch (2), english (2), beautifier (2), diff (2), java (2), git (2), bücher (2), snippets (2), kurzreferenz (2), vollständiges (2), benutzerkonto (2), page (2), durch (2), jeden (2), bedeutet (2), kontrollierter (2), validierung (2), __name (2), nein (2), empfohlen (2), frei (2), anderen (2), verbergen (2), denselben (2), methodenaufruf (2), lassen (2), bündeln (2), vier (2), haben (2), unterklasse (2), locked (2), secret123 (2), useraccount (2), check_password (2), method (2), interface (2), helper (2), detail (2), subclasses (2), need (2), drei (2), unter (2), funktionieren (2), wert (2), _radius (2), raise (2), still (2), circle (2), validation (2), same (2), öffentlichen (2), berechnete (2), kein (2), aus (2), below (2), absolute (2), zero (2), werte (2), vor (2), dem (2), speichern (2), macht (2), schreibt (2), sodass (2), während (2), wäre (2), reads (2), _base__secret (2), accesses (2), not (2), indem (2), _counter__count (2), vars (2), list (2), counter (2), versehentliche (2), 1000 (2), pin (2), benennt (2), signal (2), durchgesetzt (2), vertraut (2), internen (2), präfix (2), dieses (2), verbirgt (2), kapitel (2), handling (2), zahlen (2), limit (2), update (2), drop (2), collection (2), delete (2), insert (2), datenbank (2), grid (2), einführung (2), schleifen (2), verbinden (2), 2026, rechte, vorbehalten, gemacht, sprache, datenschutzrichtlinie, kontakt, uns, unternehmen, probier, üben, kostenlose, tutorials, beispiele, web, seit, 2014, next, previous, yes, helpful, prüfen, kennzeichnet, klassenattribut, allen, instanzen, geteilt, gelöscht, objekt, garbage, collector, entfernt, verhindert, übung, schreibzugriff, deleter, hooks, lesezugriff, teilweise, umgeschrieben, _classname__name, konventionell, _name, immer, verwendbar, erzwungen, vereinfachte, bereitstellen, komplexität, abstraktion, verschiedene, typen, reagieren, wiederverwenden, erweitern, details, kurzdefinition, prinzip, prinzipien, privat, passwortspeicherstrategie, rein, keinen, grund, sehen, bcrypt, umgestellt, müssen, beiden, dinge, geschützt, intelligentere, logik, implementieren, throttledaccount, öffentlich, ordnung, liest, beachten, successful, part, official, implementation, change, folgende, zeigt, gemeinsam, realistischen, eingesetzt, vollständige, referenz, einschließlich, deletern, finden, geschrieben, unverändert, verhalten, ändert, nun, validiert, cannot, negative, from, caller, point, view, with, plain, beginnen, upgraden, gegenüber, gettern, settern, bevorzugen, schreibgeschützte, definiert, versucht, ihr, zuzuweisen, 300, 212, 100, 273, kombinieren, validieren, parentheses, needed, unsichtbar, vielen, sprachen, explizite, bietet, saubereren, ansatz, dekorator, ermöglicht, methode, verfügbar, machen, aufrufende, lesbar, volle, kontrolle, erhalten, normales, set_x, get_x, beide, koexistieren, kollision, möglich, stored, thing, super, besonders, nützlich, bei, versehentlich, privates, ihrer, elternklasse, überschreiben, erhält, jede, ihren, eigenen, namensraum, untersucht, umbenannten, entdecken, dir, mangled, you, know, direct, access, fails, innerhalb, klassendefinition, sieht, zweck, namenskollisionen, vermeiden, echte, sicherheit, bieten, _klassenname__name, existiert, jedoch, nächsten, abschnitt, herauszufinden, findet, object, has, frowned, upon, fine, verify_pin, meant, touched, all, 1234, dadurch, deutlich, erschwert, _klassenname__attribut, häufiger, anwendungsfall, basisklasse, speichert, damit, verwandten, verborgen, als, warnt, linter, beabsichtigten, vertrag, verletzen, float, int, isinstance, _validate_amount, internal, besagt, internes, verlassen, bitte, erzwingt, reine, besondere, benennung, erforderlich, öffentliches, pass, deposit, instance, savings, account_type, bilden, offizielle, teil, verwenden, sollen, strengen, regeln, compiler, respektieren, konventionen, mechanismen, ihn, aktiv, verhindern, gebrauch, nutzbar, zur, gedacht, bedeutung, zugriffsebene, hat, zugriffsmodifikatoren, schlüsselwörter, stattdessen, absicht, signalisieren, namenskonvention, abhängig, davon, funktioniert, geringere, kopplung, darstellung, kontostände, cent, statt, euro, anzupassen, flexibilität, validierungslogik, stelle, jedes, mal, datenintegrität, vorteile, daraus, ergeben, problem, hinter, kontrollierten, einzahlen, abheben, geschäftsregeln, durchsetzen, speicher, implementierungsdetail, greifen, nie, direkt, 9999999, betrachten, bankkonto, verwaltet, dieser, einfaches, setzen, hindert, nichts, fehler, böswillige, aktion, daran, folgendes, tun, stellen, sicher, zugriffskontrolle, eng, verwandte, objekten, praxisnahes, alles, zusammenführt, wirklich, __double_underscore, namenskonventionen, behandelt, gut, umgesetzt, hält, zustand, konsistent, implementierungsdetails, beeinflussen, sicherer, objektorientierten, programmierung, diesen, arbeiten, einzigen, einheit, dabei, kontrollieren, welche, teile, des, außenwelt, verändern, erklärt, sowie, http, anfragen, pytest, pakete, virtuelle, umgebungen, tooling, best, practices, threading, asyncio, concurrency, csv, random, sys, itertools, collections, ausnahmen, auslösen, error, standard, library, zwei, addieren, umkehren, duplikate, how, enums, dataclasses, static, classmethod, magic, methods, advanced, match, anweisung, enumerate, zip, map, comprehensions, kontextmanager, rekursion, closures, generatoren, decorators, args, kwargs, type, hints, intermediate, sort, query, find, join, table, order, where, select, tabelle, einstieg, nearest, neighbors, auc, roc, kurve, cross, bootstrap, aggregation, means, kategoriale, search, logistische, hierarchisches, clustering, konfusionsmatrix, entscheidungsbaum, train, test, skalierung, multiple, polynomiale, lineare, streudiagramm, normalverteilung, datenverteilung, perzentil, standardabweichung, mittelwert, median, modus, machine, learning, kreisdiagramme, histogramme, balken, scatter, subplot, beschriftungen, linie, marker, plotting, pyplot, django, scipy, pandas, numpy, modules, löschen, dateiverarbeitung, file, formatierung, benutzereingabe, try, except, pip, regex, math, datumsangaben, module, scope, iteratoren, objekte, arrays, lambda, funktionen, for, while, else, tupeln, gruppieren, operatoren, booleans, casting, datentypen, kommentare, syntax, variablennamen, aktualisieren, tupel, entpacken, tuple, sortieren, slicen, home, ausgabevariablen, verschachtelte, modifizieren, comprehension, zusammenführen, globale, format, escape, zeichen, dictionary, verketten, mehrere, zuweisen, aufrufen, anmelden, durchsuchen, formatters, url, reverse, sha256, md5, length, calculator, colors, hsl, hex, mixer, converter, picker, general, kurse,
Text of the page (random words):
nen python tutorial auf elemente zugreifen auf listenelemente zugreifen auf set elemente zugreifen tuples aufrufen elemente hinzufügen listenelemente hinzufügen set elemente hinzufügen mehrere werte zuweisen elemente ändern listenelemente ändern strings verketten dictionaries kopieren listen kopieren dictionary methoden escape zeichen format strings globale variablen listen verbinden sets zusammenführen tuples verbinden list comprehension listen methoden dictionaries durchlaufen listen durchlaufen sets durchlaufen tuples durchlaufen strings modifizieren verschachtelte dictionaries ausgabevariablen python home python listen python sets python strings python tuples python variablen elemente entfernen listenelemente entfernen set elemente entfernen set methoden strings slicen listen sortieren string methoden tuple methoden tupel entpacken tuples aktualisieren variablennamen python einführung python erste schritte python syntax python kommentare python variablen python datentypen python zahlen python casting python strings python booleans python operatoren python listen python tupeln gruppieren python dictionaries python if else python while schleifen python for schleifen python funktionen python lambda python arrays python klassen objekte python vererbung python iteratoren python scope python module python datumsangaben python math python json python regex python pip python try except python benutzereingabe python string formatierung file handling python dateiverarbeitung python dateien lesen python dateien schreiben erstellen python dateien löschen python modules numpy tutorial pandas tutorial scipy tutorial django tutorial python matplotlib matplotlib einführung matplotlib erste schritte matplotlib pyplot matplotlib plotting matplotlib marker matplotlib linie matplotlib beschriftungen matplotlib grid matplotlib subplot matplotlib scatter matplotlib balken matplotlib histogramme matplotlib kreisdiagramme machine learning erste schritte mittelwert median modus standardabweichung perzentil datenverteilung normalverteilung von daten streudiagramm lineare regression polynomiale regression multiple regression skalierung train test entscheidungsbaum konfusionsmatrix hierarchisches clustering logistische regression grid search kategoriale daten k means bootstrap aggregation cross validation auc roc kurve k nearest neighbors python mysql mysql einstieg mysql datenbank erstellen mysql tabelle erstellen mysql insert mysql select mysql where mysql order by mysql delete mysql drop table mysql update mysql limit mysql join python mongodb mongodb erste schritte mongodb datenbank erstellen mongodb collection erstellen mongodb insert mongodb find mongodb query mongodb sort mongodb delete mongodb drop collection mongodb update mongodb limit intermediate python f strings type hints args kwargs decorators generatoren closures rekursion kontextmanager comprehensions enumerate zip map match anweisung advanced oop magic methods property static classmethod dataclasses polymorphismus kapselung abstrakte klassen enums python how to listen duplikate entfernen string umkehren zwei zahlen addieren error handling and the standard library ausnahmen auslösen collections itertools os sys random csv dateien concurrency in python asyncio threading python tooling and best practices virtuelle umgebungen pakete pytest http anfragen python kapselung python kapselung erklärt öffentliche geschützte und private member name mangling sowie getter setter mit property kapselung ist eine der vier säulen der objektorientierten programmierung sie bedeutet die daten attribute eines objekts und die methoden die mit diesen daten arbeiten in einer einzigen einheit zu bündeln und dabei zu kontrollieren auf welche teile des objekts die außenwelt zugreifen oder diese verändern kann gut umgesetzt hält kapselung den internen zustand eines objekts konsistent verbirgt implementierungsdetails sodass diese später geändert werden können ohne den aufrufenden code zu beeinflussen und macht klassen sicherer in der verwendung dieses kapitel behandelt was kapselung ist und warum sie wichtig ist öffentliche geschützte und private member und die namenskonventionen die python verwendet name mangling wie __double_underscore attribute wirklich funktionieren getter und setter mit property ein praxisnahes beispiel das alles zusammenführt stellen sie vor dem lesen sicher dass sie mit python klassen und objekten vertraut sind für die zugriffskontrolle über berechnete attribute siehe das eng verwandte kapitel zu property warum kapselung wichtig ist betrachten sie ein bankkonto intern wird ein kontostand verwaltet wenn dieser kontostand ein einfaches attribut wäre das jeder setzen könnte hindert nichts einen fehler oder eine böswillige aktion daran folgendes zu tun account balance 9999999 kopieren kapselung löst dieses problem indem sie den kontostand hinter einer kontrollierten schnittstelle verbirgt code außerhalb der klasse kann nur über methoden einzahlen oder abheben die die geschäftsregeln durchsetzen der interne speicher ist ein implementierungsdetail aufrufer greifen nie direkt darauf zu die drei vorteile die sich daraus ergeben datenintegrität validierungslogik an einer stelle die jedes mal durchgesetzt wird flexibilität die interne darstellung kann geändert werden z b kontostände in cent statt euro speichern ohne den aufrufenden code anzupassen geringere kopplung aufrufer sind nur von der öffentlichen schnittstelle abhängig nicht davon wie die klasse intern funktioniert zugriffsebenen public protected und private python hat keine zugriffsmodifikatoren wie private oder public schlüsselwörter stattdessen verwendet es eine namenskonvention um die absicht zu signalisieren präfix beispiel zugriffsebene bedeutung kein präfix balance public zur verwendung durch jeden gedacht einfacher unterstrich _ _balance protected für den internen gebrauch und unterklassen von außen nutzbar aber nicht empfohlen doppelter unterstrich __ __pin private nur für diese klasse python benennt ihn aktiv um um einfachen zugriff zu verhindern dies sind konventionen und mechanismen keine strengen regeln die von einem compiler durchgesetzt werden python vertraut darauf dass entwickler das signal respektieren öffentliche member öffentliche attribute und methoden bilden die offizielle schnittstelle der klasse den teil den aufrufer verwenden sollen class bankaccount account_type savings public class attribute def __init__ self owner balance self owner owner public instance attribute def deposit self amount pass public method kopieren es ist keine besondere benennung erforderlich jeder code kann ein öffentliches member frei lesen oder schreiben geschützte member einfacher unterstrich _ ein einzelner führender unterstrich ist ein signal das besagt dies ist ein internes detail verlassen sie sich bitte nicht darauf von außerhalb der klasse python erzwingt dies nicht es ist reine konvention class bankaccount def __init__ self owner balance self owner owner self _balance balance protected internal but subclasses may need it def _validate_amount self amount protected helper return isinstance amount int float and amount 0 kopieren _balance ist weiterhin als account _balance von außen zugänglich aber der unterstrich warnt andere entwickler und linter dass sie den beabsichtigten vertrag verletzen ein häufiger anwendungsfall eine basisklasse speichert daten in einem _ attribut damit unterklassen es lesen können während es für nicht verwandten code verborgen bleibt private member doppelter unterstrich __ ein doppelter führender unterstrich löst name mangling aus python benennt das attribut intern in _klassenname__attribut um dadurch wird der versehentliche zugriff von außen deutlich erschwert class bankaccount def __init__ self owner balance self owner owner self _balance balance self __pin 1234 private not meant to be touched at all def verify_pin self pin return pin self __pin kopieren von außerhalb der klasse acc bankaccount alice 1000 print acc owner alice public fine print acc _balance 1000 protected works but frowned upon print acc __pin attributeerror bankaccount object has no attribute __pin kopieren das attribut existiert weiterhin jedoch unter einem anderen namen siehe den nächsten abschnitt um herauszufinden wie man es findet name mangling wenn python self __name innerhalb einer klassendefinition sieht schreibt es dies intern in self _klassenname__name um dies ist name mangling der zweck ist es versehentliche namenskollisionen in unterklassen zu vermeiden nicht echte sicherheit zu bieten class counter def __init__ self self __count 0 def increment self self __count 1 def value self return self __count c counter c increment c increment print c value 2 direct access fails print c __count attributeerror but mangled name still works if you know it print c _counter__count 2 kopieren alle attribute können mit vars oder dir untersucht werden um den umbenannten namen zu entdecken print list vars c _counter__count kopieren name mangling und vererbung name mangling ist besonders nützlich bei der vererbung ohne es könnte eine unterklasse versehentlich ein privates attribut ihrer elternklasse überschreiben indem sie denselben namen verwendet mit mangling erhält jede klasse ihren eigenen namensraum class base def __init__ self self __secret base def reveal self return self __secret accesses _base__secret class child base def __init__ self super __init__ self __secret child stored as _child__secret not the same thing def reveal_child self return self __secret accesses _child__secret c child print c reveal base base reveal reads _base__secret print c reveal_child child child reveal_child reads _child__secret kopieren beide attribute koexistieren ohne kollision was ohne name mangling nicht möglich wäre getter und setter mit property in vielen sprachen schreibt man explizite get_x und set_x methoden python bietet einen saubereren ansatz der property dekorator ermöglicht es eine methode wie ein normales attribut verfügbar zu machen sodass der aufrufende code lesbar bleibt während die volle kontrolle über lesen und schreiben erhalten bleibt einfacher getter class temperature def __init__ self celsius self _celsius celsius property def celsius self return self _celsius kopieren aufrufer lesen t celsius nicht t celsius das property macht den methodenaufruf unsichtbar t temperature 25 print t celsius 25 no parentheses needed kopieren setter mit validierung hinzufügen kombinieren sie property mit einem setter um werte vor dem speichern zu validieren class temperature def __init__ self celsius self _celsius celsius property def celsius self return self _celsius celsius setter def celsius self value if value 273 15 raise valueerror temperature below absolute zero self _celsius value property def fahrenheit self return self _celsius 9 5 32 kopieren t temperature 25 print t celsius 25 print t fahrenheit 77 0 t celsius 100 print t fahrenheit 212 0 t celsius 300 valueerror temperature below absolute zero kopieren fahrenheit ist eine schreibgeschützte berechnete property da kein setter definiert ist löst python einen attributeerror aus wenn versucht wird ihr einen wert zuzuweisen warum property gegenüber einfachen gettern settern bevorzugen man kann mit einem einfachen öffentlichen attribut beginnen und es später auf eine property upgraden ohne aufrufenden code zu ändern v1 plain attribute class circle def __init__ self radius self radius radius v2 property with validation same public interface class circle def __init__ self radius self radius radius still works from the caller s point of view property def radius self return self _radius radius setter def radius self value if value 0 raise valueerror radius cannot be negative self _radius value kopieren aufrufer die c radius 5 geschrieben haben funktionieren weiterhin unverändert nur das verhalten ändert sich der wert wird nun validiert eine vollständige referenz zu property einschließlich deletern finden sie unter python property ein vollständiges beispiel benutzerkonto das folgende beispiel zeigt alle drei zugriffsebenen die gemeinsam in einer realistischen klasse eingesetzt werden class useraccount def __init__ self username password self username username public self _login_attempts 0 protected subclasses may need this self __password_hash self __hash password private def __hash self password private helper implementation detail may change return hash password def check_password self password public method part of the official interface return self __hash password self __password_hash def login self password if self _login_attempts 3 return account locked if self check_password password self _login_attempts 0 return login successful self _login_attempts 1 return f wrong password self _login_attempts 3 user useraccount alice secret123 print user login bad wrong password 1 3 print user login bad wrong password 2 3 print user login bad wrong password 3 3 print user login secret123 account locked kopieren beachten sie username ist öffentlich es ist in ordnung wenn jeder es liest _login_attempts ist geschützt eine throttledaccount unterklasse könnte es lesen um eine intelligentere logik zu implementieren __password_hash und __hash sind privat die passwortspeicherstrategie ist rein intern aufrufer haben keinen grund sie zu sehen und wenn später auf bcrypt umgestellt wird müssen nur diese beiden dinge geändert werden kapselung vs andere oop säulen kapselung ist eines von vier oop prinzipien prinzip kurzdefinition kapselung daten methoden bündeln interne details verbergen vererbung eine klasse eine andere klasse wiederverwenden und erweitern lassen polymorphismus verschiedene typen auf denselben methodenaufruf reagieren lassen abstraktion eine vereinfachte schnittstelle bereitstellen komplexität verbergen siehe python vererbung python polymorphismus und abstrakte python klassen für die anderen säulen kurzreferenz konvention was sie signalisiert von python erzwungen name public frei verwendbar nein immer zugänglich _name protected interne verwendung nein zugänglich aber konventionell nicht empfohlen __name private nur diese klasse teilweise name wird zu _classname__name umgeschrieben property kontrollierter lesezugriff ja getter setter deleter hooks name setter kontrollierter schreibzugriff mit validierung ja übungen übung was signalisiert ein einzelner führender unterstrich z b _balance in python was signalisiert ein einzelner führender unterstrich z b _balance in python es ist eine konvention die bedeutet interne verwendung nicht von außerhalb der klasse zugreifen python verhindert jeden zugriff auf das attribut von außerhalb der klasse das attribut wird gelöscht wenn das objekt durch den garbage collector entfernt wird es kennzeichnet ein klassenattribut das von allen instanzen geteilt wird prüfen was this page helpful yes no previous polymorphismus next abstrakte klassen on this page warum kapselung wichtig ist zugriffsebenen public protected und private name mangling getter und setter mit propert...
|