Объекты класса поддерживают два типа операций: ссылки на атрибуты и создание экземпляров.
Ссылки на атрибуты используют стандартный синтаксис, используемый для всех ссылок на атрибуты в Python: obj.name. Допустимые имена атрибутов - это все имена, которые были в пространстве имен класса при создании объекта класса. Итак, если определение класса выглядело так:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
тогда MyClass.i
и MyClass.f
- допустимые ссылки на атрибуты, возвращающие целое число и объект функции соответственно. Атрибуты класса также могут быть присвоены, поэтому вы можете изменить значение MyClass.i
путем присвоения. __doc__
также является допустимым атрибутом, возвращающим строку документации, принадлежащую классу: «Простой пример класса».
Создание экземпляра класса использует обозначение функций. Просто представьте, что объект класса - это функция без параметров, которая возвращает новый экземпляр класса. Например:
x = MyClass()
Операция создания экземпляра («вызов» объекта класса) создает пустой объект. Многие классы любят создавать объекты с экземплярами, настроенными для определенного начального состояния. Поэтому класс может определять специальный метод с именем __init__()
, например:
def __init__(self):
self.data = []
Когда класс определяет метод __init__()
, создание экземпляра класса автоматически вызывает __init__()
для вновь созданного экземпляра класса. Итак, в этом примере новый инициализированный экземпляр может быть получен следующим образом:
x = MyClass()
Конечно, у метода __init__()
могут быть аргументы в пользу большей гибкости. В этом случае аргументы, данные оператору создания экземпляра класса, передаются __init__()
. Например,
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
x.r, x.i
Взято из официальной документации, которая в итоге мне очень помогла.
Вот мой пример
class Bill():
def __init__(self,apples,figs,dates):
self.apples = apples
self.figs = figs
self.dates = dates
self.bill = apples + figs + dates
print ("Buy",self.apples,"apples", self.figs,"figs
and",self.dates,"dates.
Total fruitty bill is",self.bill," pieces of fruit :)")
Когда вы создаете экземпляр класса Bill:
purchase = Bill(5,6,7)
Ты получаешь:
> Buy 5 apples 6 figs and 7 dates. Total fruitty bill is 18 pieces of
> fruit :)
person
Harvey
schedule
01.05.2018