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条)

报告相同问题?

悬赏问题

  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题