V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zoroojack
V2EX  ›  Python

新手求助: Python 在定义类中的__init__方法时,不能调用类中的方法吗?

  •  
  •   zoroojack · 2019-02-20 10:33:14 +08:00 · 4770 次点击
    这是一个创建于 2137 天前的主题,其中的信息可能已经有所发展或是发生改变。

    class A():

    def __init__(self,):
        super().__init__()
        self.a = funa()
    def funa():
        print("funa is runing...")
    

    aaa = A()

    报错:NameError: name 'funa' is not defined

    调整 funa()函数的位置没有作用。

    第 1 条附言  ·  2019-02-20 11:10:45 +08:00
    还有个问题:按照刚才提示的使用 self 去赋值,那么调用这个函数时,还是会报错:
    TypeError: funa() takes 0 positional arguments but 1 was given
    难道没法在__init__方法里调用那个方法吗?
    第 2 条附言  ·  2019-02-20 11:12:35 +08:00
    解决了,谢谢各位大佬!
    class A():


    def __init__(self,):
    super().__init__()
    self.a = self.funa()
    def funa(self):
    print("funa is runing...")

    aaa = A()
    最后改成这样,就没事了。
    用的 VSCODE。
    11 条回复    2019-02-24 01:02:46 +08:00
    xdlucky
        1
    xdlucky  
       2019-02-20 10:34:29 +08:00
    self.funa
    anshengme
        2
    anshengme  
       2019-02-20 10:37:11 +08:00
    self.funa
    zoroojack
        3
    zoroojack  
    OP
       2019-02-20 10:53:24 +08:00
    @xdlucky
    @anshengme
    感谢两位的回复,加上 self 后,又会传递一个参数给这个函数,还是会报错:
    TypeError: funa() takes 0 positional arguments but 1 was given
    zoroojack
        4
    zoroojack  
    OP
       2019-02-20 10:54:08 +08:00
    哦,我弄错了。谢谢两位!
    a852695
        5
    a852695  
       2019-02-20 11:06:31 +08:00
    你的 funa 确定是类方法?我怎么觉得你少了个 self 参数
    iyaozhen
        6
    iyaozhen  
       2019-02-20 11:08:13 +08:00 via Android
    楼主,你这种情况需要个 IDE,看着就是一片红
    ClutchBear
        7
    ClutchBear  
       2019-02-20 11:13:19 +08:00
    hunter2015
        8
    hunter2015  
       2019-02-20 11:16:37 +08:00
    class A:
    def __init__(self):
    super().__init__()
    self.a = self.funa()

    @classmethod
    def funa(cls):
    print("funa is runing...")
    return True
    BBCCBB
        9
    BBCCBB  
       2019-02-20 11:18:11 +08:00
    vscode 假装一个 lint 的插件, 实时监测语法错误.
    zw1027
        10
    zw1027  
       2019-02-20 15:45:35 +08:00
    还得多看看文档哟
    Qzier
        11
    Qzier  
       2019-02-24 01:02:46 +08:00 via iPhone
    你是在调用函数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   977 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:48 · PVG 03:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.