Форум сайта python.su
Мучает вопрос:
Итак, когда применяется метод к экземпляру, этот метод и есть метод экземпляра или же это метод класса который запускается при его выполнении? (возможно плохо объяснил, буду разъяснять)
class Person: def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay def lastName(self): return self.name.split()[-1] def giveRaise(self, percent): self.pay = int(self.pay*(1+percent)) def __str__(self): return '[Person: %s, %s]'%(self.name,self.pay)
g.giveRaise(10)
g.giveRaise(10)
Person.giveRaise(g, 10)
print(dir(g))
Отредактировано jerry99 (Ноя. 2, 2017 17:57:55)
Офлайн
Возможно вам покажется это чушью, так как виден прямой вызов атрибута объекта экземпляра и можно понять что он вызывает свой атрибут, а не атрибут объекта класса, но кто знает какие тайны хранит в себе ООП
P.S Вспомнил почему у меня появился туман в голове, что возбудил меня задать этот вопрос:
Как известно поиск методов введётся в дереве наследования - И введется ли он в момент создания экземпляра или же в момент вызова метода экземпляра?
Отредактировано jerry99 (Ноя. 2, 2017 18:05:32)
Офлайн
jerry99
Дорогой друг, чушь - это когда человек знает некоторые особенности обсуждаемого вопроса, но делает нелогичные в целом предположения. Ваше словоблудие, это не чушь, это шизофазия - вы соединяете между собой слова, которые в совокупности составляют похожее на грамматически верное, но не имеющее смысла предложение. Не надо вам ничего комментировать, хорошо?
Отредактировано FishHook (Ноя. 2, 2017 18:03:11)
Офлайн
FishHook
Я конечно извиняюсь, но я как видите новичок в вашем языке, и как любой новичок имею очень много вопросов. Мне очень интересно где я допустил нелогическую дыру? Или же вы как говорится в народе “простой балабол”?
Сейчас я наблюдал ещё одно странное поведение языка:
Я понял, что экземпляры класса проводят поиск по дереву в момент вызова метода экземпляра:
class Person: def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay def lastName(self): return self.name.split()[-1] def giveRaise(self, percent): self.pay = int(self.pay*(1+percent)) def __str__(self): return '[Person: %s, %s]'%(self.name,self.pay) class Ron(Person): def giveRaise(self, percent, hello): self.pay = percent+hello g = Ron('alex') print(dir(g)) del Ron.giveRaise g.giveRaise(.5) # Второй аргумент недоступен (значит поиск введётся в момент вызова метода экземпляра, а не в момент создания экземпляра)
Отредактировано jerry99 (Ноя. 2, 2017 18:18:55)
Офлайн
jerry99Нет, я просто модератор этого форума, моя обязанность следить за адекватностью контента.
Или же вы как говорится в народе “простой балабол”?
вызов атрибута объекта экземпляраи
свой атрибут, а не атрибут объекта классая начну вас воспринимать всерьез. И не надо со мной спорить, форум пока что нужен вам, а вы форуму не нужны, поэтому вам надо молчать и слушать, иначе я вас просто удалю отсюда.
Офлайн
FishHook
FishHook
Вот как только вы переведете мне смысл фраз
вызов атрибута объекта экземпляра
и
свой атрибут, а не атрибут объекта класса
Атрибуты класса создаются присваиванием атрибутам объекта класса.атрибутам объекта класса.
Обычно они создаются инструкциями верхнего уровня в инструкции class –
каждое имя, которому будет присвоено значение внутри инструкции class,
становится атрибутом объекта класса (с технической точки зрения область
видимости инструкции class преобразуется в пространство имен атрибутов
объекта класса). Атрибуты класса могут также создаваться через присваи-
вание атрибутам класса в любом месте, где доступна ссылка на объект клас-
са, то есть даже за пределами инструкции class.
4. Атрибуты экземпляра создаются присваиванием атрибутам объекта эк-
земпляра. Обычно они создаются внутри методов класса, в инструкции
class – присваиванием значений атрибутам аргумента self (который всегда
является подразумеваемым экземпляром). Повторюсь: возможно создавать
атрибуты с помощью операции присваивания в любом месте программы,
где доступна ссылка на экземпляр, даже за пределами инструкции class.
Закрепление пройденного 727
Обычно все атрибуты экземпляров инициализируются в конструкторе __
init__ – благодаря этому при последующих вызовах методов можно быть
уверенным в существовании необходимых атрибутов.
FishHookОчень интересно кто поставил модератором человека не знающего банальных терминов языка.
я просто модератор этого форума
FishHookЗабыл что у вас тут автократия, извиняюсь
поэтому вам надо молчать и слушать, иначе я вас просто удалю отсюда.
Офлайн
jerry99Да, именно вы должны это объяснять, потому что вы это выдумали
Я должен вам объяснять что такое объект экземпляра
jerry99Разумеется
Или же вы считаете что я написал самую обыкновенную чушь?
атрибутам объекта класса.
атрибутам объекта экземпляра
Офлайн
Очень интересно кто поставил модератором человека не знающего банальных терминов языка
Отредактировано FishHook (Ноя. 2, 2017 19:01:05)
Офлайн