y2d1sm 2020-12-28 23:12 采纳率: 100%
浏览 20
已采纳

python关于类的两个问题,看代码

class A:
    a=1    
    def pl(self):
        self.a*=2
        print(self.a)
q=A
q.a=2
w=A
print(w.a)
w().pl()
print(w.a)

执行结果为

2
4
2

问题1:为什么 w().pl()中w后面不跟()就会报错:TypeError: pl() missing 1 required positional argument: 'self'

问题2:最后一个print 的结果为啥不是4呢?

  1. 新手无金币,见谅~
  • 写回答

5条回答 默认 最新

  • leop7 2020-12-29 11:27
    关注

    问题1:为什么 w().pl()中w后面不跟()就会报错:TypeError: pl() missing 1 required positional argument: 'self'

    因为你必须实例化才能调用其内部函数

    问题2:最后一个print 的结果为啥不是4呢?

    还是一样道理,因为你没有具体实例化对象,所以还是没运行函数,你可以改成以下情况对比下就知道了

    class A:
        a=1    
        def pl(self):
            self.a*=2
            print(self.a)
    q=A
    q.a=2
    w=A
    print(w.a)
    c=w()
    c.pl()
    print(w.a)
    print(c.a)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?