我是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'
答案 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