определение класса python против определения класса C ++

Я только что заметил, как классы отличаются в Python по сравнению с C ++.
Подобно,
В C ++

Class test

{int  a,b;

Void  func()

{

}

}

В приведенном выше шаблоне класса a и b являются только переменными объекта, которые определены в шаблоне.

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

Подобно,

Class student(self):

def func(self,x)
pass

В приведенном выше шаблоне класса мы не можем определить любые переменные объекта. dir (student) предоставит список только функций и переменных класса.

предположим, если я создаю экземпляр объекта этого класса, скажем S. Если я хочу дать имя этому ученику,
S.name = «« сделаем

Теперь dir (S) покажет атрибут имени, тогда как у dir (student) не будет поля имени
Для меня это звучало немного странно.

Функция интерпретации python позволяет добавлять столько полей, сколько мы хотим, к объекту, что нормально.

вопросы, которые пришли ко мне

  1. почему они не предоставили возможность определения переменных в определении класса? , А также

  2. как память зарезервирована во время создания экземпляра и изменена, когда новые объекты добавлены к объектам?

Спасибо,

-Kallis

-1

Решение

  1. Python подчеркивает динамическую типизацию, поэтому вы можете добавлять переменные в любое время. Вы можете добавить любые переменные, которые вы хотите быть там в __init__ конструктор. Вы также можете захотеть переменные класса. если ты действительно хотите, вы можете переопределить __setattr__ метод чтобы люди не могли добавлять новые атрибуты. Вы также можете использовать __slots__, но ты не должен.

  2. Если вы не используете __slots__атрибуты хранятся в __dict__ толковый словарь. Таким образом, сам экземпляр класса занимает только пространство указателя словаря (плюс несколько других мелких вещей).

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector