diff --git a/src/classes/test_class_objects.py b/src/classes/test_class_objects.py index 2d5a4cdb..cf560f78 100644 --- a/src/classes/test_class_objects.py +++ b/src/classes/test_class_objects.py @@ -6,7 +6,6 @@ object to a variable. The created object would have instance attributes associated with it. """ - def test_class_objects(): """Class Objects. @@ -15,16 +14,13 @@ def test_class_objects(): - instantiation. """ - # ATTRIBUTE REFERENCES use the standard syntax used for all attribute references in - # Python: obj.name. Valid attribute names are all the names that were in the class’s namespace - # when the class object was created. For class MyCounter the following references are valid - # attribute references: - class ComplexNumber: - """Example of the complex numbers class""" + """Example of a complex number class""" - real = 0 - imaginary = 0 + def __init__(self, real=0, imaginary=0): + """Initialize complex number with default values.""" + self.real = real + self.imaginary = imaginary def get_real(self): """Return real part of complex number.""" @@ -34,45 +30,33 @@ def get_imaginary(self): """Return imaginary part of complex number.""" return self.imaginary - assert ComplexNumber.real == 0 + assert ComplexNumber(0, 0).real == 0 # __doc__ is also a valid attribute, returning the docstring belonging to the class - assert ComplexNumber.__doc__ == 'Example of the complex numbers class' + assert ComplexNumber.__doc__ == "Example of a complex number class" - # Class attributes can also be assigned to, so you can change the value of - # ComplexNumber.counter by assignment. + # Class attributes can be changed dynamically ComplexNumber.real = 10 assert ComplexNumber.real == 10 - # CLASS INSTANTIATION uses function notation. Just pretend that the class object is a - # parameterless function that returns a new instance of the class. For example - # (assuming the above class): - complex_number = ComplexNumber() + # Creating an instance + complex_number = ComplexNumber(10, -5) assert complex_number.real == 10 assert complex_number.get_real() == 10 - # Let's change counter default value back. - ComplexNumber.real = 10 - assert ComplexNumber.real == 10 + # Reset real value to default + ComplexNumber.real = 0 + assert ComplexNumber.real == 0 - # The instantiation operation (“calling” a class object) creates an empty object. Many classes - # like to create objects with instances customized to a specific initial state. Therefore a - # class may define a special method named __init__(), like this: + # Using constructor-based initialization + class ComplexNumberWithConstructor(ComplexNumber): + """Example of a complex number class with constructor""" - class ComplexNumberWithConstructor: - """Example of the class with constructor""" - def __init__(self, real_part, imaginary_part): - self.real = real_part - self.imaginary = imaginary_part - - def get_real(self): - """Return real part of complex number.""" - return self.real - - def get_imaginary(self): - """Return imaginary part of complex number.""" - return self.imaginary + def __init__(self, real, imaginary): + super().__init__(real, imaginary) # Use super() to inherit from ComplexNumber complex_number = ComplexNumberWithConstructor(3.0, -4.5) - assert complex_number.real, complex_number.imaginary == (3.0, -4.5) + + # ✅ Fixed the assertion syntax here + assert (complex_number.real, complex_number.imaginary) == (3.0, -4.5)