Forum » Programiranje » Python class inheritance
Python class inheritance
twom ::
lib_datoteka.py
V glavnem programu sedaj, glede na potrebo, kreiram en objekt, recimo Person(Toddler).
Zadeva mi ne deluje elegantno, pa še circular reference imam,
obsežno bazo enakih nastavitev z različnimi vrednostmi v npr Toddler, ki jih rabim v Person, ko se izvede Person(Toddler)
Nastavitve obsegajo več tisoč vrstic za vsak "child", ki jih nebi tlačil v class Person. Ravno tako nebi rad imel v Lib mapi dodatne 4 py datoteke
Če ne bo šlo drugače bom datoteko razbil na dodatne datoteke:
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
class Student(Person):
#več tisoč vrstic nastavitev (dict)
pass
class Worker(Person):
#več tisoč vrstic enakih nastavitev z drugimi vrednostmi (dict)
pass
Ali gre obratno? Na primer:class Person(Student OR Worker OR Teacher OR Toddler):
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
class Student():
pass
class Worker():
pass
V class Person imam veliko funkcij, ki jih rabim v Student, Worker, Teacher, Toddler V glavnem programu sedaj, glede na potrebo, kreiram en objekt, recimo Person(Toddler).
Zadeva mi ne deluje elegantno, pa še circular reference imam,
obsežno bazo enakih nastavitev z različnimi vrednostmi v npr Toddler, ki jih rabim v Person, ko se izvede Person(Toddler)
Nastavitve obsegajo več tisoč vrstic za vsak "child", ki jih nebi tlačil v class Person. Ravno tako nebi rad imel v Lib mapi dodatne 4 py datoteke
Če ne bo šlo drugače bom datoteko razbil na dodatne datoteke:
from todder import Toddler
from student import Student
class Person:
def __init__(self, what):
if what == "student"...
RGB Potica ::
Načeloma je že pojav if stavkov v očetovskem razredu rdeč alarm. Če Person vsebuje logiko, ki je vezana na otroke, uporaba dedovanja nima smisla.
Se pravi drugi način (Person(Student)) ni smiselen, kaj bi pravzaprav sploh rad dosegel ?
Sem prehitro bral, če bi rad združil enake nastavitve bi bilo smiselno upoštevati nasvet kolega zgoraj in jih preprosto dati v __init__ metodo razreda Person.
Ostale nastavitve ostanejo v Student, Worker, Person, seveda moraš eksplicitno klicati podedovano metodo __init__.
Se pravi drugi način (Person(Student)) ni smiselen, kaj bi pravzaprav sploh rad dosegel ?
Sem prehitro bral, če bi rad združil enake nastavitve bi bilo smiselno upoštevati nasvet kolega zgoraj in jih preprosto dati v __init__ metodo razreda Person.
Ostale nastavitve ostanejo v Student, Worker, Person, seveda moraš eksplicitno klicati podedovano metodo __init__.
Zgodovina sprememb…
- spremenilo: RGB Potica ()
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 19640 (10388) | black ice |
| » | Predstavitev dvojiškega drevesa z seznamomOddelek: Programiranje | 2257 (1857) | ktka |
| » | [Python]Naloga z razredi in dedovanjemOddelek: Programiranje | 1352 (1104) | ktka |
| » | [c++] Orm... ActiveRecord pattern ... nasvetOddelek: Programiranje | 1270 (1146) | zhigatsey |
| » | Python, novo vprašanje...Oddelek: Programiranje | 1157 (1068) | jype |