class Animal(object):
"""Makes cute animals."""
is_alive = True
health = 'good'
def __init__(self, name, age):
self.name = name
self.age = age
# Add your method here!
def description(self):
print self.name
print self.age
hippo = Animal('Tom', '20')
sloth = Animal('Randy', '18')
ocelot = Animal('Birdman','57')
hippo.description()
print ocelot.health
print hippo.health
print sloth.health
Код, указанный выше, относится к курсу python codecademy. Я запутался в некоторых определениях, связанных с ООП. Если мое понимание верное, функция, определенная внутри класса, называется методом, поэтому, когда она вызывается, например, так: «hippo.description()», «(») необходимы из-за синтаксиса, связанного с функции.Разница между методами и переменными-членами?
Однако я начинаю путать с «self.name» и «self.age». Это также методы? Мне было интересно, были ли они, возможно, переменными-членами, но тогда они не будут определены так же, как переменная «здоровье» была выше? И если они не являются переменными-членами, откуда они могут быть доступны с использованием точечной нотации так же, как переменные-члены?
Приветствия
Это поможет использовать номенклатуру Python; 'ocelot.health' является атрибутом * класса *, общим для всех' Animal', тогда как 'ocelot.name' является атрибутом * экземпляра *, уникальным для этого конкретного экземпляра. Оба могут быть доступны через 'self' в * методах экземпляра *. – jonrsharpe
См. Http://stackoverflow.com/questions/7548546/python-class-attributes-and-instance-attributes и http://stackoverflow.com/questions/207000/python-difference-between-class-and-instance -attributes Я думаю, что я должен отметить это как дубликат, но мне нужно понять, из какого из них: P –
@FilipMalczak С другой стороны, заголовок запрашивает разницу между атрибутами метода и переменной, а не атрибутами класса и экземпляра. – skyking