Uebung 05
This commit is contained in:
51
uebung_05/exercise_02/exercise_02.py
Normal file
51
uebung_05/exercise_02/exercise_02.py
Normal file
@ -0,0 +1,51 @@
|
||||
import numpy as np
|
||||
|
||||
class Ball:
|
||||
__diameter__ = 0.0
|
||||
|
||||
## Methods
|
||||
# Constructor
|
||||
def __init__(self, diameter = 1.0):
|
||||
self.__diameter__ = diameter
|
||||
pass
|
||||
|
||||
# a simple method
|
||||
def introduction(self):
|
||||
print(f"My diameter is {self.__diameter__:.3f}.")
|
||||
pass
|
||||
|
||||
# Getter
|
||||
def get_diameter(self):
|
||||
return self.__diameter__
|
||||
|
||||
# overload __add_ (+)
|
||||
def __add__(self, other):
|
||||
d1 = self.get_diameter()
|
||||
|
||||
if(isinstance(other, Ball)):
|
||||
d2 = other.get_diameter()
|
||||
combined_volume = 1/6 * np.pi * (d1**3 + d2**3)
|
||||
elif(isinstance(other, int) or isinstance(other, float)):
|
||||
combined_volume = 1/6 * np.pi*d1**3 + other
|
||||
else:
|
||||
raise ValueError("Invalid summand.")
|
||||
d_combined = np.power(6 * combined_volume / np.pi, 1/3)
|
||||
return Ball(d_combined)
|
||||
|
||||
# overload __radd__ (number + Ball)
|
||||
def __radd__(self, other):
|
||||
return self + other
|
||||
|
||||
# main code
|
||||
a = Ball()
|
||||
b = Ball(2.0)
|
||||
|
||||
c = a + b
|
||||
|
||||
d = a + 5
|
||||
e = 5 + a
|
||||
|
||||
a.introduction()
|
||||
b.introduction()
|
||||
c.introduction()
|
||||
d.introduction()
|
Reference in New Issue
Block a user