2016-04-18 3 views
0

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

class Dog(): 

    def Bark(): 
     print("woof") 

Marley = Dog 

Marley.Bark() 

Но если добавить себя в Bark(), как в:

class Dog(): 

    def Bark(self): 
     print("woof") 

    def Bark_lots(self): 
     for I in range(3):  
      self.Bark() 

Marley = Dog 

Marley.Bark_lots() 

Затем питон бросает ошибку типа :

TypeError: Bark_lots() отсутствует 1 необходимые позиционная аргумент: «я»

Все, что я искал только на переговоры о том, почему необходимо самостоятельно и что это делать эс. Мне явно чего-то не хватает, и из прошлого опыта это, вероятно, просто. Любая помощь по этому вопросу будет высоко оценена.

(Кроме того, я новичок в переполнению стека обмена/стека, если я нарушил какие-либо правила, пожалуйста, предупредить меня туда, где я буду это исправить.)

+0

Вам нужно создать [Объекты класса] (https://docs.python.org/2/tutorial/classes.html#class-objects), если вы хотите получить доступ к методу с 'self'. – AKS

ответ

0

После вызова Сlass вам нужно поставить скобку (Dog() , не Dog):

Marley = Dog() 
Marley.Bark() 
+0

Так было просто, спасибо! – Drickken

+0

@Drickken: Рад помочь. Выберите ответ, чтобы помочь другим пользователям с той же проблемой. – JRazor

+0

Пойдем, Stack Overflow хочет, чтобы я подождал 10 минут, задав вопрос – Drickken

-1

Похоже вы пропустили небольшую часть. Я заметил, что вы вызываете функцию ненадлежащим образом. Не забудьте ввести открывающие и закрывающие скобки при вызове функции. Правильный путь был бы;

class Dog(): 

def Bark(self): 
    print("woof") 

def Bark_lots(self): 
    for I in range(3):  
     self.Bark() 

Marley = Dog() 

Marley.Bark_lots() 
+0

Не дублируйте ответы, пожалуйста. – JRazor

-1

Марли = Dog() отличается от Марли = Собака

Марли = Dog: Сам класс присваивается переменной Марли. Marley будет ссылкой на класс Dog. мы можем использовать, как показано ниже,

m=Dog 
x= m() 
x.bark_lots() '''x's ref will be passed as self to the function''' 

Марли = Dog(): Здесь вы создаете объект класса Dog. Так что, когда вы звоните

Marley = Dog() 
Marley.Bark_lots() 

объекта Марля ссылки будет считаться самими парами.

+0

Благодарим вас за разъяснения. – Drickken

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