2017-07-11 17 views
1

我读过方法的第一个参数是调用方法的实例。 我不明白为什么当我写这篇文章Python在使用“self”时需要位置参数

class A: 
    def printName(self, name): 
     print(name) 

A.printName("asd") 

我得到这个错误类型错误:printName()失踪1个人需要的位置参数:“名”。 我失踪了什么?

+1

可能重复的[TypeError:缺少1所需的位置参数:'self'](https://stackoverflow.com/questions/17534345/typeerror-missing-1-required-positional-argument-self) –

回答

2

您需要创建一个类的实例,然后调用方法在该实例:

class A: 
    def printName(self, name): 
     print(name) 

class_instance = A() 
class_instance.printName("asd") 
+0

感谢您的答案。 我真的不知道A.printName(“asd”)不是一个实例 – akerbeltz

+0

A是一个类对象,而A()是一个新的类实例: – Andrea

+0

看看文档:https://docs.python.org /2/tutorial/classes.html 了解类的基础非常重要。玩的开心! – Andrea

0

这会工作,使用staticmethod如果你想打电话printName()而无需创建该类的实例

class A: 
    @staticmethod 
    def printName(name): 
     print(name) 

A.printName('hello') 
+0

感谢您的回答。 你可以解释什么是在Python中的静态方法,为什么它不需要'自我', 我试过你的代码,它甚至没有@staticmethod工程,为什么? 对不起,但我有很多麻烦理解如何工作'自我'的论点 – akerbeltz

+1

@akerbeltz :) ** staticmethods **是绑定到类而不是它的对象的方法。他们不需要类实例'@ staticmethod'告诉我们正在使用'staticmethod'。在早期版本中,写入** staticmethod **的语法不同。你可以只是谷歌获取更多信息 – ksai

+0

自己是'this'对象的等价物。 staticmethod不是针对不同的实例,而是绑定到一个类。 – gout

相关问题