Статические свойства
@Property с модификацией поведения класса в класс атрибутов поведения класса, есть роль упаковки
Примеры.
# - * - Кодирование:. 8 UTF - - * - класс номер: DEF метод __init __ (Self, имя, владелец, ширина, длина, Heigh): Имя self.name = self.Owner = владелец self.Width = ширина self.Length = длина self.Heigh = Heigh # поведение в свойствах класса класса, инкапсуляция эффект @property DEF cal_area (Self): возвращение self.Length * self.Width Room1 = номер ( '102', 'Алекс', 10 , 10,3)
# не вызов перед добавлением @property # room1.cal_area S = () # печати (S) room2 = номер ( '103', 'Алекс', 10,5,3) # S2 = room2.cal_area () # печати (S2)
# вызов после добавления @property S1 = room1.cal_area печати (S1) , S2 = room2.cal_area печати (S2) ,
Метод (в отсутствии метода класса вызывает случай экземпляров класса) Класс
@classmethod
# - * - кодирование: UTF-8 - * - класс номер: тег = 1 Защита __init __ (я, имя, владелец, ширина, длина, Heigh): self.Name = имя self.Owner = владелец self.Width = ширина собственный .Length = длина self.Heigh = Heigh защиту cal_area (Я): возвращение self.Length * self.Width @classmethod защиту информации (ЦБС): печать ( '我是类方法') Room.info ()
Статический метод
@staticmethod
Статическое имя метода только на дом управление, не может использовать переменный класс и переменный экземпляр основан инструментарий
# - * - кодирование: UTF-8 - * - класс номер: тег = 1 Защита __init __ (я, имя, владелец, ширина, длина, Heigh): self.Name = имя self.Owner = владелец self.Width = ширина собственный .Length = длина self.Heigh = Heigh защиту cal_area (Я): возвращение self.Length * self.Width @classmethod защиту информации (ЦБС): печать ( '我是类方法') @staticmethod четкости в прямом эфире (а, б): печать ( '% s% s和是住户' % (а, б)) #类调用 Room.live (Алекс ', 'боб') #实例调用 Room1 = номер ( '102', 'Алекс', 10, 10,3) room1.live ( 'Алекс', 'боб')
Резюме: @property и только привязки экземпляра (как статическое свойство может получить доступ к свойству экземпляра, они могут получить доступ к атрибуту класса), @ classmethod связывать только класс (методы класса могут получить доступ только атрибут класса), @ STATICMETHOD классы и экземпляры могут быть (класс атрибутов класса ни один из методов, ни экземпляра атрибутов)