# 19_

 # 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"





# дальше все по видео ....




Report Page