class Cat(): name = "" weight = "" def meow(self): print(self.name, " say MEOW!!!!") cat = Cat() cat.name = "Bars" cat.weight = 12 cat.meow()
Конструктор, как только создадим новый класс, выполнится функция
class Dog(): name="" # Конструктор вызывается в момент создания объекта этого типа; # специальный метод Python, поэтому два нижних подчеркивания def __init__ (self): print ("Родилась новая собака!") # Создаем собаку (объект myDog класса Dog) myDog = Dog()
class Animal(): def __init__ (self, new_name): print("New animal was born!!!") self.name = new_name def getName(self): print("Name: ", self.name) def setName(self, new_name): self.name = new_name def makeNoice(self): print(self.name, " say GRRRR!!!!") animal = Animal("Red") animal.getName() animal.makeNoice() animal.setName("Bob") animal.getName() animal.makeNoice()
Можно создавать не изменяймые объекты
class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Если оставить только 1 метод getter убрать setter — то атрибут изменить не получится
вызов c.x как экземпляра C выведет значение, еси присвоить значение c.x=»value» будет вызван метод setter и значение x изменится
Наследование классов и методов
class Person(): name="" def __init__ (self): print ("Создан человек") class Employee (Person): job_title="" def __init__ (self): print ("Создан работник") class Customer(Person): email="" def __init__ (self): Person.__init__ (self) # вызываем конструктор базового класса print ("Создан покупатель")
В Employee конструктор базового класса будет перелпределен
В Customer будет вызван конструктор базового класса
Если ничего не указывать то тоже будет вызван конструктор базового класса
Все классы создаются из самого первого класса __object__ , можно создать своё исключение
class UppercaseException(Exception): pass #Вызовем исключение, когда встретим слово в верхнем регистре: words = ['q', 'r', 'm', 'M'] for word in words: if word.isupper(): raise UppercaseException(word #Output Traceback (most recent call last): File "<pyshell#140>", line 3, in <module> raise UppercaseException(word) UppercaseException: M
0 Comment