43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
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})" |