Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
понимание упаковки
упаковка(Encapsulation): абстракция свойств и методов
-
Абстракция атрибутов: определение, изоляция и защита атрибутов (переменных) класса.
Делится на частную собственность и государственную собственность
- частная собственность: доступ возможен только внутри класса
- общественная собственность: можно получить доступ по классу, имени объекта
Вы можете открыть или скрыть атрибуты, а также скрыть внутренний механизм атрибутов.
-
Абстракция метода: определение, изоляция и защита методов (функций) класса.
Делятся на приватные методы и публичные методы
- частный метод: доступ возможен только внутри класса
- общедоступный метод: можно получить доступ по классу, имени объекта
Вы можете открыть или скрыть метод, скрывая внутреннюю логику метода.
-
Цель состоит в том, чтобы сформировать интерфейс для внешних управляемых свойств и методов.
Чтобы сделать процесс упаковки и кодовые данные называться классом, выражены как: класс - свойства - метод
Свойства частного класса, свойства открытого класса, свойства частного экземпляра и свойства общедоступного экземпляра
выставлять свойства класса
Атрибуты общедоступного класса — это атрибуты класса, грамматическая структура
class ClassName:
<类属性名> = <类属性初值>
def __init__(self,[参数1], [参数2], ...[参数n]):
self.<实例属性名> = <实例属性初值>
...
свойства частного класса
Доступ к закрытым свойствам класса может получить только текущий класс, а не подклассы. Грамматические структуры
class ClassName:
<__私有类属性名> = <私有类属性初值>
def __init__(self,[参数1], [参数2], ...[参数n]):
self.<实例属性名> = <实例属性初值>
...
.<类属性>
или<对象名>.<类属性>
способ доступа
Эффективно обеспечивать управляемость обслуживанием атрибутов
Пример кода выглядит следующим образом:
class TestClass:
__number = 0
def __init__(self, num_value):
for i in range(num_value + 1):
TestClass.__number += i
@classmethod # 类方法
def sum_number(cls):
return TestClass.__number
value1 = TestClass(100)
print(TestClass.sum_number()) # 5050
# print(value1.__number) # AttributeError: 'TestClass' object has no attribute '__number'
Визит на вынос в классе.__number
сообщитAttributeError
аномальный
Показать свойства экземпляра
Предоставление свойств экземпляра эквивалентно свойствам примера, структуре синтаксиса
class <类名>:
<类属性名> = <类方法值>
def __init__(self, <参数列表>):
self.<实例属性名> = <实例属性值>
...
свойства частного экземпляра
Свойства частного экземпляра можно использовать только в текущем классе, а не в подклассах. Грамматические структуры
class <类名>:
<类属性名> = <类方法值>
def __init__(self, <参数列表>):
self.<__私有实例属性名> = <实例属性值>
...
.<类属性>
или<对象名>.<类属性>
способ доступа
Эффективно обеспечивать управляемость обслуживанием атрибутов
образец кода
class TestClass:
def __init__(self, num_value):
self.__number = 0
for i in range(num_value + 1):
self.__number += i
def sum_number(self):
return self.__number
value1 = TestClass(100)
print(value1.sum_number()) # 5050
# print(value1.__number) # AttributeError: 'TestClass' object has no attribute '__number'
Частная собственность не обязательно действительно частная
Двойное подчеркивание частного свойства — это просто соглашение о преобразовании.После преобразования исходное имя в классе изменилось, что является формой частного свойства.
образец кода
class TestClass:
def __init__(self, num_value):
self.__number = 0
for i in range(num_value + 1):
self.__number += i
def sum_number(self):
return self.__number
value1 = TestClass(100)
print(value1.sum_number()) # 5050
print(value1._TestClass__number) # 5050
# 可以通过 对象名._类名__属性 的方式来访问
в состоянии пройти对象名._类名__属性
способ доступа.
частные и публичные методы
Определяющие методы — это методы, которые определены и используются внутри класса. Грамматические структуры
class <类名>:
def <__私有方法名>(self, <参数列表>):
...
При определении частного метода перед именем свойства требуется два символа подчеркивания (__
).
Все виды методов можно превратить в приватные, добавив двойную строку вниз.
Частный метод формально защищает функциональную логику, используемую внутри класса Python.
Частные свойства и публичность — это логика программиста, а не логика безопасности, и они придают большое значение соглашениям.
Зарезервированные свойства класса
Атрибуты класса, зарезервированные интерпретатором Python, начинающиеся или заканчивающиеся двойным подчеркиванием.
- Зарезервированные свойства также называются специальными свойствами.
- Начинайте и заканчивайте двойным подчеркиванием
- Роль заключается в предоставлении унифицированного интерфейса атрибутов для понимания классов Python.
- Значение атрибута имеет особое значение и используется сразу после определения класса.
использовать только<类名>
Доступ к зарезервированным свойствам
зарезервированное имущество | описывать |
---|---|
__name__ |
класс существительное |
__qualname__ |
от. отдельные имена классов, начиная с глобального пространства имен шаблона |
__bases__ |
Имя базового класса, от которого наследуется класс |
Зарезервированные методы класса
Зарезервированные методы — это методы, зарезервированные интерпретатором Python, начинающиеся и заканчивающиеся двойным подчеркиванием.
- зарезервированные методы также называются специальными методами
- Начинайте и заканчивайте двойным подчеркиванием
- Роль заключается в предоставлении унифицированного интерфейса методов для понимания классов Python.
- Логика метода: имеет особое значение, обычно связанное с операторами, определения классов необходимо перегружать