2013-07-24 5 views
-1

Я просто наблюдал, как классы отличаются в python по сравнению с C++. Как , В C++определение класса python Определение класса V ++ C++

Class test 

{ 


    int a,b; 

    Void func() 

    { 

    } 

} 

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

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

Мол,

Class student(self): 

    def func(self,x) 
     pass 

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

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

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

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

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

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

  2. как хранятся воспоминания во время создания экземпляра и модифицированы при добавлении новых объектов к объектам?

Спасибо,

-kallis

+0

В чем вопрос? – aaronman

+0

В столбце точно нет «шаблонов». – Griwes

ответ

2
  1. Python подчеркивает динамическую типизацию, так что вы можете добавить переменные всякий раз, когда вы хотите. Вы можете добавить любые переменные, которые вы хотите найти в конструкторе __init__. Вам также может понадобиться class variables. Если вы действительно хотите, вы можете переопределить the __setattr__ method, чтобы люди не добавляли новые атрибуты. Вы также можете использовать __slots__, но you shouldn't.

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