# 19_
class Foo:
def __init__(self,a):
self.__a = a
a = Foo(5)
print(a._Foo__a) # инкапсуляция в пайтоне [19:18] обходим принцыпи инкапсулирования
print(a.__a) # МІ ЕГО ДОКАЗІВАЕМ
# _________________ Гетер - сеттер
class Foo:
def __init__(self,a):
self.__a = a
self.__life = a
@property # метод life становиться свойством
# метод ГЕТТЕР - работа со скрытими значениями. Метод возвращающий значение. ТОлько для чтения
def life (self):
return self.__life
@life.setter # наименование life
# метод СЕТТЕР возможность записи значения
def life (self,a):
if a<0:
raise ValueError
self.__life = a
a = Foo(100)
print (a.life())
def get(self):
return self.__a
def set(self, a):
self.__a = a
_________________________
# 19_1
# класс температуры
class Temperature:
def __init__(self):
self.__temp = 0
@property
def celsius(self):
return self.__temp
@property
def faringate(self):
return self.__temp+32
@property
def kelvin(self):
return self.__temp-273
@celsius.setter
def celsius(self,a):
self.__temp = a
@kelvin.setter
def kelvin(self,a):
self.__temp = a+273
@faringate.setter
def faringate(self,a):
self.__temp = a-32
a = Temperature()
# print("что по фарингейту ",a.faringate) #
f = int(input("введите значения цельсия > "))
a.celsius = f # если температура по фарингейту 0
print("что по фарингейту ",a.faringate) # то сколько по цельсию
print("что по кельвину ",a.kelvin)
____________
# 19_2
# линейное наследование
class Foo:
def __init__(self,a):
self.a = a
class Boo:
def __init__(self,b):
self.b = b
class Zoo(Foo, Boo):
def __init__(self, a,b):
Foo.__init__(self,a)
Boo.__init__(self,b)
a = Zoo(11,12)
print(a.b)
# __ если переменные одинаковы
class Foo:
def __init__(self,a):
self.a = a
class Boo:
def __init__(self,b):
self.b = a
class Zoo(Foo, Boo):
def __init__(self, a,b):
Foo.__init__(self,a)
Boo.__init__(self,b)
a = Zoo(11,12)
print(a.a)
________________________
# 19__3
class File:
def __init(self):
self.__name = None
self.__flag = False
@property
def file(self):
if self.__name is not None and self.__flag:
with open(self.__name, 'r') as f:
return f.read()
raise NameError
@file.setter
def file(self,text):
if self.__name is not None:
self.__flag = True
with open(self.__name, 'a') as f:
f.write(text)
else:
raise NameError
@property
def name(self):
if self.__name is not None:
return self.__name
raise NameError
@name.setter
def name(self,name_file):
if self.__name is not None:
if name_file != self.__name:
self.__flag = False
self.__name = name_file
else:
self.__name = name_file
class BD:
def __init__(self):
self.__name_bd = None
@property
def name_db(self):
if self.__name_bd is not None:
return self.__name_bd
raise NameError
@name_db.setter
def name_db(self,name):
self.__name_db = name
class My(File, BD):
def __init__(self):
File.__init__(self)
BD.__init__(self)
test = My()
test.name_db = '127.0.0.1'
test.name = "test"
print(test.name_db)
test.file = "ASD"
# дальше все по видео ....