Параметр self отличается по функциям, почему? - PullRequest
0 голосов
/ 11 февраля 2019

Я нахожу этот пример очень запутанным, поскольку они используют два разных аргумента. Почему?

class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Итак, в python, например, методы, первый аргумент для экземпляра класса.Как упоминалось в других ответах, это аргумент self .Но это только условно.Вы можете пойти с любым от bananas до mysillyobject.

Таким образом, в вашем классе метод myfunc () определен, чтобы принимать только один аргумент, который является экземпляром, который я упоминал ранее.

Следовательно, когда вы вызываете myfunc () из p1 (где p1 - объект класса Person), вы неявно передаете p1 для аргумента abc, указанного в определении:

def myfunc(abc): # p1 is passed for abc
    print("Hello my name is " + abc.name)

Таким образом, к p1.name обращаются и печатают для получения правильного вывода

0 голосов
/ 11 февраля 2019

Первый параметр метода экземпляра всегда является ссылкой на экземпляр.

В качестве соглашения вы обычно называете этот параметр self , как бы вы ни былиВы можете присвоить параметру любое другое допустимое имя, как показано в коде, который вы разместили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...