我一直在尝试访问在所述类之外的类中创建的函数。 如果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'
我搜索过的所有东西都只谈到了为什么需要自我以及它做了什么。我显然缺少一些东西,从过去的经验来看,它可能很简单。对此问题的任何帮助将不胜感激。
(我也是新的堆栈交换/堆栈溢出,如果我违反了任何规则,请提醒我在哪里,我会解决它。)
答案 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的引用将被视为自我参数。