Python技术交流
不知道为啥,代码跳出个TypeError,哪个大佬帮忙看一下?class A:
x = 520
def hello(self):
print("你好,我是A")
>>> class B(A):
pass
>>> b = B
>>> b.x
520
>>> b.hello()
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
b.hello()
TypeError: hello() missing 1 required positional argument: 'self' 问题在于调用 `b = B` 时,未对类B进行实例化,因此调用函数 `hello()` 时缺少要求的实例化self参数,导致 TypeError。可以通过加上括号`()`来对类B进行实例化以修复问题。
class A:
x = 520
def hello(self):
print("你好,我是A")
class B(A):
pass
# 加上括号,对类B进行实例化
b = B()
print(b.x) # 输出:520
b.hello() # 输出:你好,我是A
求最佳答案{:10_254:} 你在创建B类的实例时,将B类本身赋值给了b ,而不是它的实例。所以,当你试图调用hello方法时,Python无法找到需要的self参数。这是因为在 Python 中,类的方法默认需要一个实例作为第一个参数(通常命名为self ),代表调用该方法的对象本身。
你需要通过调用B()来创建一个B类的实例,然后在该实例上调用hello方法。如下所示:
b = B()# 注意这里是调用B(),而不是直接赋值B
b.hello()# 现在这行代码就不会报错了
上面的代码会输出:
你好,我是A
你的错误就在于将b赋值为B类本身,而不是B类的一个实例。这就导致了当你试图调用hello方法时,Python 找不到它期望的self参数。在 Python 中,类的方法默认会期望一个参数(通常被命名为self ),这个参数代表调用这个方法的实例。
页:
[1]