class CLanguage: def info(self): print("我正在学 Python") #通过类名直接调用实例方法 CLanguage.info()运行上面代码,程序会报出如下错误:
Traceback (most recent call last):
File "D:\python3.6\demo.py", line 5, in <module>
CLanguage.info()
TypeError: info() missing 1 required positional argument: 'self'
class CLanguage: def info(self): print("我正在学 Python") clang = CLanguage() #通过类名直接调用实例方法 CLanguage.info(clang)再次运行程序,结果为:
我正在学 Python
可以看到,通过手动将 clang 这个类对象传给了 self 参数,使得程序得以正确执行。实际上,这里调用实例方法的形式完全是等价于clang.info()。
class CLanguage: def info(self): print(self,"正在学 Python") #通过类名直接调用实例方法 CLanguage.info("zhangsan")运行结果为:
zhangsan 正在学 Python
可以看到,"zhangsan" 这个字符串传给了 info() 方法的 self 参数。显然,无论是 info() 方法中使用 self 参数调用其它类方法,还是使用 self 参数定义新的实例变量,胡乱的给 self 参数传参都将会导致程序运行崩溃。
本文链接:http://task.lmcjl.com/news/9642.html