无法从类python

时间:2017-10-09 10:48:05

标签: python

我是python的新手。我正面临一个问题。当我在类中添加新方法时,我无法通过它们的实例变量调用它。以下是该问题的详细信息。

我正在使用https://github.com/instagrambot/instabot

我在bot.py文件中添加了新方法(https://github.com/instagrambot/instabot/blob/master/instabot/bot/bot.py)。这是新功能的代码。

......
......

from .bot_stats import get_user_stats_dict

class Bot(API):
....
    def get_user_stats_dict(self, username, path=""):
        return get_user_stats_dict(self, username, path=path)

它从bot_stats文件中调用具有相同名称的新函数(文件链接:https://github.com/instagrambot/instabot/blob/master/instabot/bot/bot_stats.py)。这是我在此文件中添加的功能代码。

def get_user_stats_dict(self, username, path=""):
    if not username:
        username = self.username
    user_id = self.convert_to_user_id(username)
    infodict = self.get_user_info(user_id)
    if infodict:
        data_to_save = {
            "date": str(datetime.datetime.now().replace(microsecond=0)),
            "followers": int(infodict["follower_count"]),
            "following": int(infodict["following_count"]),
            "medias": int(infodict["media_count"]),
            "user_id": user_id
        }
        return data_to_save
    return False

我创建了一个运行这个新方法的新文件test.py。这是代码脚本:

import os
import sys
import time
import argparse

sys.path.append(os.path.join(sys.path[0], '../'))
from instabot import Bot

bot = Bot()
bot.login(username='username', password='pass')
resdict = bot.get_user_stats_dict('username')

我在CMD中使用以下命令运行test.py文件。

python test.py

我收到以下错误:

AttributeError: 'Bot' object has no attribute 'get_user_stats_dict'

1 个答案:

答案 0 :(得分:1)

确保您在班级中定义了实例方法。您得到的错误是因为实例对象在该名称中没有有界方法。这意味着它没有在类中定义的方法,所以我会仔细检查它。 (def缩进是正确的;它的位置是正确的,等等。)

我尝试过以下简单示例。此代码有效:

# test2.py
def other_module_func(self):
    print self.x

# test.py
from test2 import other_module_func

class A(object):
    def __init__(self, x):
        self.x = x

    def other_module_func(self):
        return other_module_func(self)

a = A(4)
a.other_module_func()
4