zoukankan      html  css  js  c++  java
  • Python self学习

    最开始学习Python时,用的IDE是IDEL,看的教程是《简明Python教程》,强烈推荐一下,讲得还是很不错的,适合新手学习

    http://www.kuqin.com/abyteofpython_cn/index.html

    学到面向对象编程时,遇到了一个小问题

    class Person:
    def add(a,b):
    print(a+b)
    p = Person()
    p.add(1,2)

    按照java的思路来看没问题,但是运行时却出现了错误

    Traceback (most recent call last):
    File "C:/Users/zym09/Desktop/test.py", line 5, in <module>
    p.add(1,2)
    TypeError: add() takes 2 positional arguments but 3 were given

    不是很理解这种错误是什么原因,以为是编辑器出了问题

    好吧~换个编辑器,试试eclipse

    但是,重点来了,在eclipse中写add方法是直接显示了add(self),代码自动提示出来,

    好吧,原来是没认真看,再回头看self的介绍

    类的方法与普通函数只有一个特别的区别,他们必须有一个额外的第一个参数的名称,但是在调用这个方法时可以不必为这个参数赋值,这个特别的变量指对象本身(类似于java中的this)

    所以正确的代码应该是

    class Person:
    str="aaa"
    def add(self,a,b):
    print(a+b)
    print(self.str) 
    p = Person()
    p.add(1,2)

    这样最终输出是:

    3
    aaa

    直陈陋见,欢迎指教

  • 相关阅读:
    [erlang 002]gen_server中何时会跑到terminate函数
    设计模式:桥接模式
    设计模式:组合模式
    Harbor:镜像上传和下载
    Harbor:简介和安装
    Docker:compose
    ThinkPHP的静态化页面方法
    php使用memcached详解
    大话PHP设计模式
    PHP魔术方法使用
  • 原文地址:https://www.cnblogs.com/sdnu-zhang/p/8422659.html
Copyright © 2011-2022 走看看