Python - Polimorfism, *args & **kwargs, ORM
Till dagens föreläsning finns ingen presenation, nedan är den kod som skrevs på föreläsningen:
Polimorfism
App.py
from Course import Course
from CourseUG import CourseUG
from CourseUV import CourseUV
from CourseAF import CourseAF
class App:
def __init__(self):
self.courses = self.generate_courses()
def generate_courses(self):
courses = []
courses.append(Course("DA100A", "Välkomstvecka"))
courses.append(CourseUG("DA385A", "Examensarbete"))
courses.append(CourseUV("DA361A", "OOP i Python"))
courses.append(CourseAF("DA200A", "International studies"))
return courses
def get_grade_from_score(self, score):
for course in self.courses:
print(course.calc_grade(score))
def print_courses(self):
for course in self.courses:
print(course)
a = App()
a.print_courses()
a.get_grade_from_score(80)
Course.py
class Course:
def __init__(self, code, name, lang="sv", students=[], teachers=[]):
self.code = code
self.name = name
self.language = lang
self.students = students
self.teachers = teachers
def calc_grade(self, points):
if points > 0:
return "Kursen har lästs"
else:
return "Har ej läst kursen"
def __str__(self):
return "{}: {}".format(self.code, self.name)
CourseUG.py
from Course import Course
class CourseUG(Course):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def calc_grade(self, points):
if points >= 50:
return "G"
else:
return "U"
CourseUV
from Course import Course
class CourseUV(Course):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def calc_grade(self, points):
if points < 50:
return "U"
elif points < 76:
return "G"
else:
return "VG"
CourseAF
from Course import Course
class CourseAF(Course):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def calc_grade(self, points):
if points < 50:
return "F"
elif points < 60:
return "E"
elif points < 70:
return "D"
elif points < 80:
return "C"
elif points < 90:
return "B"
else:
return "A"
ORM
from peewee import *
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db # This model uses the "people.db" database.
# Skapa databasen
db.create_tables([Person])
# Skapa användare
Person.create(name='Anton', birthday=date(1989, 10, 2))
Person.create(name='Johanna', birthday=date(1995, 7, 13))
# Skriv ut alla användare från vår databas
for person in Person.select():
print(person.name)
*args & **kwargs
def test(*args, **kwargs):
print("-Argument:")
for arg in args:
print(arg)
print("- Key word Argument:")
for name, value in kwargs.items():
print("{}: {}".format(name, value))
test("Anton", "Tibblin", "Mau", "Malmö", course="OOP i Python")