如何访问在课堂外使用self的函数

时间:2016-04-18 05:02:04

标签: python class

我一直在尝试访问在所述类之外的类中创建的函数。 如果self不是函数的参数之一,它就可以正常工作,如:

class Dog():

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

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

Marley = Dog

Marley.Bark_lots()

但是如果我将自己添加到Bark(),如:

people = { 
    "Jack" => 1500,
    "John" => 3000,
    "Peter" => 2500,
    "Simon" => 4000
}

然后python抛出一个类型错误:

TypeError:Bark_lots()缺少1个必需的位置参数:' self'

我搜索过的所有东西都只谈到了为什么需要自我以及它做了什么。我显然缺少一些东西,从过去的经验来看,它可能很简单。对此问题的任何帮助将不胜感激。

(我也是新的堆栈交换/堆栈溢出,如果我违反了任何规则,请提醒我在哪里,我会解决它。)

3 个答案:

答案 0 :(得分:0)

在调用сlass之后,你需要加上括号(Dog(),而不是Dog):

Marley = Dog()
Marley.Bark()

答案 1 :(得分:-1)

好像你错过了一小部分。我注意到你正在调用一个函数不正确。在调用函数时,不要忘记键入开始和结束括号。正确的方法是;

class Dog():

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

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

Marley = Dog()

Marley.Bark_lots()

答案 2 :(得分:-1)

Marley = Dog() Marley = Dog

不同

Marley = Dog :课程本身被分配到变量 Marley Marley 将成为Dog类的参考。 我们可以使用如下,

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

Marley = Dog():在这里您要创建类 Dog 的对象。所以当你打电话时

Marley = Dog()
Marley.Bark_lots()

对象 Marley的引用将被视为自我参数。