OOPs
OOPs
class MyClass:
def __del__(self):
print("Object is being destroyed")
class BaseClass:
def __init__(self):
self.base_attribute = "Base"
class DerivedClass(BaseClass):
def __init__(self):
super().__init__()
self.derived_attribute = "Derived"
class DerivedClass(BaseClass):
def __init__(self):
super().__init__()
self.derived_attribute = "Derived"
def get_private_attribute(self):
return self.__private_attribute
class AbstractClass(ABC):
def abstract_method(self):
pass
class ConcreteClass(AbstractClass):
def abstract_method(self):
return "Concrete Implementation"
class ClassB:
def method_b(self):
return "B"
c = ClassC()
print(c.method_a(), c.method_b()) # Output: A B
class DerivedClass(BaseClass):
def method(self):
return "Derived method"
class MyClass:
def __init__(self, value):
self.value = value
def __str__(self):
return f'MyClass with value {self.value}'
def __repr__(self):
return f'MyClass({self.value})'
obj = MyClass(42)
print(str(obj)) # Output: MyClass with value 42
print(repr(obj)) # Output: MyClass(42)
class B:
def method(self):
print("Method from class B")
c = C()
c.method() # Output: Method from class A (due to MRO)
print(C.mro()) # Output: [<class '__main__.C'>, <class '__main__.A'>,
<class '__main__.B'>, <class 'object'>]
@property
def value(self):
return self._value
@value.setter
def value(self, new_value):
if new_value < 0:
raise ValueError("Value cannot be negative")
self._value = new_value
obj = MyClass(10)
print(obj.value) # Output: 10
obj.value = 20 # Valid operation
print(obj.value) # Output: 20
obj.value = -5 # Raises ValueError: Value cannot be negative