more cool stuff
chess, woah
This commit is contained in:
43
book_stuff/student.py
Normal file
43
book_stuff/student.py
Normal file
@@ -0,0 +1,43 @@
|
||||
class Student:
|
||||
def __init__(self, name: str, gNumber: int, gpa: float):
|
||||
self.set_name(name)
|
||||
self.set_gNumber(gNumber)
|
||||
self.set_gpa(gpa)
|
||||
|
||||
# --- Name ---
|
||||
def get_name(self) -> str:
|
||||
return self._name
|
||||
|
||||
def set_name(self, value: str) -> None:
|
||||
if not isinstance(value, str):
|
||||
raise TypeError("Name must be a string")
|
||||
if not value.isalpha():
|
||||
raise ValueError("Name must contain only alphabetic characters")
|
||||
if not (1 <= len(value) <= 255):
|
||||
raise ValueError("Name must be between 1 and 255 characters")
|
||||
self._name = value
|
||||
|
||||
# --- gNumber ---
|
||||
def get_gNumber(self) -> int:
|
||||
return self._gNumber
|
||||
|
||||
def set_gNumber(self, value: int) -> None:
|
||||
if not isinstance(value, int):
|
||||
raise TypeError("gNumber must be an integer")
|
||||
if not (100000 <= value <= 999999):
|
||||
raise ValueError("gNumber must be a 6-digit number between 100000 and 999999")
|
||||
self._gNumber = value
|
||||
|
||||
# --- GPA ---
|
||||
def get_gpa(self) -> float:
|
||||
return self._gpa
|
||||
|
||||
def set_gpa(self, value: float) -> None:
|
||||
if not isinstance(value, (int, float)):
|
||||
raise TypeError("GPA must be a number")
|
||||
if not (0.0 <= value <= 6.0):
|
||||
raise ValueError("GPA must be between 0.0 and 6.0")
|
||||
self._gpa = float(value)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"Student(Name: {self._name}, gNumber: {self._gNumber}, GPA: {self._gpa:.2f})"
|
||||
Reference in New Issue
Block a user