2015-05-11 10 views
-3

В чем разница между этим экземпляром Person?Добавить класс во время выполнения

class Person: 
    pass 

a = Person() 
a.name = "Jo" 
a.age = 25 

print(a.name) 

b = Person() 
b.surname = "Deshu" 
print(b.surname) 

Является a и b же типа? - Да. Почему? Они имеют разные члены a имеют Person.name и Person.age атрибуты, b только Person.surname

+4

Почему бы не использовать, например. 'type (a)' чтобы узнать? – jonrsharpe

ответ

3

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

python использует утиную печать - то есть вам не нужно иметь общий суперкласс или интерфейс, чтобы разрешить полиморфизм - вам просто нужно иметь соответствующие методы \ свойства.

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

это до вас, чтобы не злоупотреблять утку набрав

питона наследование является более актуальным для наследования поведения - унаследовать реализацию метода из суперкласса.

0

Как верно для модулей, классы участвуют в динамическом характере Python: они создаются во время выполнения и могут быть изменены после создания.

Вы можете проверить документацию python по этому вопросу. https://docs.python.org/2/tutorial/classes.html

Смежные вопросы