Initial commit
This commit is contained in:
34
set_get_attr_example.py
Normal file
34
set_get_attr_example.py
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
class Number:
|
||||
def __init__(self, number):
|
||||
self._number = number
|
||||
|
||||
def power(self):
|
||||
self._number = self.number * self.number
|
||||
|
||||
def another_func(self):
|
||||
print("In another function")
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
# print(name, type(name), value, type(value))
|
||||
super().__setattr__('_number', 0)
|
||||
try:
|
||||
if isinstance(value, int):
|
||||
super().__setattr__('_number', value)
|
||||
elif isinstance(value, str):
|
||||
super().__setattr__('_number', int(value))
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
def __getattribute__(self, name):
|
||||
options = ['power', 'another_func', '__class__']
|
||||
if name in options:
|
||||
return super().__getattribute__(name)
|
||||
else:
|
||||
return super().__getattribute__('_number')
|
||||
|
||||
def __str__(self):
|
||||
return str(self._number)
|
||||
|
||||
def __getattr__(self, name):
|
||||
return self._number
|
Reference in New Issue
Block a user