Re: Leere Argumente, Default Argumente
Verfasst: Samstag 20. März 2021, 11:15
Zeig doch einfach den Code wie er wirklich ist, insbesondere die Stelle, wo du `initialisieren` aufrufst.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# ORM and Db Connection
engine = create_engine('postgresql://postgres:passwort1234@localhost:5432/test', echo=False)
Session = sessionmaker(bind=engine)
Base = declarative_base()
Code: Alles auswählen
#Imports
from sqlalchemy import create_engine
from sqlalchemy import event
from sqlalchemy.orm import mapper
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, String, Integer, Date
from base import Base
#Class Hierachy
class Lebewesen(Base):
__tablename__ = 'Tierwelt'
id = Column(Integer, primary_key=True)
name = Column(String(100))
maximalKraft = Column(Integer)
alter = Column(Integer)
type = Column(String(150))
__mapper_args__ = {
'polymorphic_identity':'Lebewesen',
'polymorphic_on':type
}
class Tier(Lebewesen):
__mapper_args__ = {'polymorphic_identity':'Tier'}
class Hund(Tier):
anzahlPfoten = Column(Integer)
__mapper_args__ = {'polymorphic_identity':'Hund'}
class Labrador(Hund):
__mapper_args__ = {'polymorphic_identity':'Labrador'}
#Konsturtor, alle default auf none
def __init__(self ,id , name = none, maximalKraft = none, alter = none, anzahlPfoten = none):
self.id = id
self.name = name
self.maximalKraft = maximalKraft
self.alter = alter
self.anzahlPfoten = anzahlPfoten
class Katze(Lebewesen):
__mapper_args__ = {'polymorphic_identity':'Katze'}
class LanghaarKatze(Katze):
__mapper_args__ = {'polymorphic_identity':'LanghaarKatze'}
haarlaenge= Column(Integer)
hight = Column(Integer)
#Konstruktor
def __init__(self ,id , name = none, maximalKraft = none, alter = none, haarlaenge = none, hight = none ):
self.id = id
self.name = name
self.maximalKraft = maximalKraft
self.alter = alter
self.haarlaenge = haarlaenge
self.hight = hight
#Warum brauch ich das hier nochmal, kommt das nicht von base ?
engine = create_engine('postgresql://postgres:passwort1234@localhost:5432/test', echo=False)
Session = sessionmaker(bind=engine)
sess = Session()
#Auch hier sind die Inputs default auch none, weil ich hoffte dass es das Problem löst
def add_entry(Klasse, id , name = none, maximalKraft = none, alter = none, anzahlPfoten = none, haarlaenge = none, hight = none):
obj = Klasse( id , name , maximalKraft , alter , anzahlPfoten , haarlaenge , hight )
sess.add(obj)
sess.commit()
sess.close()
Code: Alles auswählen
#Dieser Aufruf funktioniert nicht, da zuviele Argumente übergeben wurden: Fehler: __init__() takes from 1 to 6 positional arguments but 7 were given
add_entry(LanghaarKatze, 1, 'Fluff', 5, 12, 3, 20)
#Dieser Aufruf nicht funktioniert, da zuviele Argumente übergeben wurden: Fehler: __init__() takes from 1 to 5 positional arguments but 7 were given
add_entry(Labrador, 2, 'Bello', 15, 3, 4)
Code: Alles auswählen
def add_entry(session, obj):
session.add(obj)
session.commit()
Code: Alles auswählen
add_entry(session, LanghaarKatze(1, "Fluff", 5, 12, 3, 20))
add_entry(session, Labrador(2, "Bello", 15, 3, 4))