Рубрики
Без рубрики

Атрибуты экземпляра Python Class VS [Учебное пособие + видео]

Атрибут класса Python – это переменная, которая принадлежит к классу, а не индивидуальному экземпляру и совместно используется между всеми экземплярами. Атрибут экземпляра – это переменная, которая принадлежит именно одному объекту. Атрибут экземпляра определяется внутри метода __init __ (), используя ссылку на атрибут экземпляра, тогда как атрибут класса … атрибуты экземпляра Python Class [Учебное пособие + видео] Подробнее »

Автор оригинала: Chris.

Python Атрибут класса является переменным, которая принадлежит к классу, а не на индивидуальном экземпляре, и совместно используется между всеми случаями. Атрибут экземпляра это переменная, которая принадлежит ровно одному объекту. Атрибут экземпляра определен внутри __init __ () Способ, используя ссылку на я SEA, тогда как определен атрибут класса вне __init __ () метод.

Как вы проходите через это руководство, не стесняйтесь смотреть мое видео объяснение:

Сегодня вы собираетесь узнать о терминология «Атрибуты» Потому что вам нужно понимать термин и концепции срока, чтобы иметь возможность освоить более продвинутые вещи.

Есть два типа атрибутов: Атрибуты класса и Атрибуты экземпляра.

  • Атрибуты класса являются переменными, которые определены для самого класса. Атрибуты классов совместно используются всеми экземплярами – изменение будет видно во всех случаях.
  • Атрибуты экземпляра являются переменными, которые определены для каждого экземпляра отдельно. Если один экземпляр изменяет переменную экземпляра, другие переменные экземпляра не влияют.

Класс атрибутов

Атрибуты класса являются переменными, которые определены для самого класса. Атрибуты классов совместно используются всеми экземплярами – изменение будет видно во всех случаях.

Это можно увидеть в следующем примере, где как автомобильные экземпляры P1 и P2 имеют одно и то же класс атрибута. Если вы измените его для класса, оба экземпляра см. Изменение?

class Car:
    brand = 'porsche' # Class attribute

# Create two instances
p1 = Car()
p2 = Car()

# Change the class attribute
Car.brand = 'tesla'

# Check the value of the class attributes of both instances
print(p1.brand)
print(p2.brand)

Выходный фрагмент кода:

tesla
tesla

Итак, оба экземпляра видят атрибут измененного класса.

Атрибуты экземпляра

Атрибуты экземпляра являются переменными, которые определены для каждого экземпляра отдельно. Если один экземпляр изменяет переменную экземпляра, другие переменные экземпляра не влияют.

Следующий код показывает, что изменение атрибута экземпляра одного экземпляра не изменит атрибут экземпляра другого экземпляра.

class Car:
    def __init__(self):
        self.brand = 'porsche' # Instance attribute

# Create two instances
p1 = Car()
p2 = Car()

# Change the instance attribute
p1.brand = 'tesla'

# Check the value of both instances' attributes
print(p1.brand)
print(p2.brand)

Следовательно, вывод:

tesla
porsche

Давайте сделаем эти различия палку в свой мозг с тремя головоломками быстрого кода, будем ли мы?

Пазлы класса VS

Давайте посмотрим на пример, подписываемый одним из моих абонентов по электронной почте (я немного изменил его для равенства покровителей). Кстати, подпишитесь на мой список, чтобы получить бесплатные чис-листы Python, пазлы кода, уроки Python и участвуют в конкурсах кодовых конкурсов. Это огромное веселье – вы увидите! 🤓 🐍

class Partner:
    database = []

    def __init__(self, name, age, likes_me):
        self.database.append(self)
        self.name = name
        self.age = age
        self.likes_me = likes_me


Maria = Partner("Maria", 21, False)
Florian = Partner("Florian", 116, False)
Eve = Partner("Eve", 22, True)
Fiona = Partner("Fiona", 55, True)


for partner in Partner.database:
    if partner.age<25 and partner.likes_me==True:
        print(partner.name +"(age " + str(partner.age) + ") likes you!")

Головоломка 1: Какая вывод фрагмента кода?

В этом примере показаны оба типа атрибутов: атрибуты класса «База данных» и атрибуты экземпляра «Имя», «Возраст» и «likes_me».

Атрибут класса определяется за пределами конструктора __init __ (…). Вы просто создаете и инициализируете переменную в классе (например. База данных = [] «В примере). Снаружи мы получаем доступ к этой переменной через класс (E.g. Partner.database) не через экземпляр (например, Maria.database).

Тем не менее, мы действительно можем получить доступ к атрибуту класса через каждый экземпляр, как это:

print(Fiona.database == Maria.database)

Puzzle 2: Что такое вывод фрагмента кода?

Это отличается от атрибутов экземпляра:

print(Fiona.age == Maria.age)

Головоломка 3: Что такое вывод фрагмента кода?

Ответы на головоломки приведены ниже в конце этой статьи.

Резюме

Подводя итоги, атрибуты классов совместно используются между всеми случаями определенного класса. Измените атрибут класса и все экземпляры увидят изменения.

Атрибуты экземпляра индивидуальны для одного экземпляра. Измените атрибут экземпляра, и только этот экземпляр будут изменены данные

Ответы головоломки

Вот ответы на вышеуказанные кодовые головоломки.

## Puzzle 1: Eve(age 22) likes you!
## Puzzle 2: True
## Puzzle 3: False

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/python-attributes/”