【发布时间】:2017-08-09 01:47:59
【问题描述】:
希望有人可以帮助我尝试打印类方法的变量。如我的代码中所示,我想打印方法“on_status”的变量 A,它是我的类 MyStreamListener 的一部分。这可能吗?有点菜鸟问题...欣赏任何见解。谢谢!
Y = 0
class MyStreamListener(tweepy.StreamListener):
def __init__(self, api=None, **options):
self.api = api
self.retry_time_start = options.get("retry_time", 5.0)
self.retry_420_start = options.get("retry_420", 60.0)
def on_connect(self):
pass
def on_status(self, status):
X = '@' + status.user.screen_name + ' - ' + status.text
if not any(badword in X for badword in badwords):
print(X)
print(status.created_at)
self.A = status.user.screen_name
def on_error(self, status_code):
if status_code == 420:
Y = 1
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
# async parameter on filter will allow stream to run on a new thread when connection is closed and old thread is blocked
while True:
if Y != 1:
print(myStream.filter(track=['test'], async = True))
--- WANT TO PRINT VARIABLE A HERE ---
【问题讨论】:
-
假设
on_status已经被调用,那么就执行print(myStream.A)。 -
方法可能没有被执行,所以变量不存在。当方法内部的条件不满足时也是如此。
-
这是一个简单的实例方法,而不是
classmethod -
注意:
on_error()中的Y = 1不会在没有global声明的情况下更改全局Y,因此Y永远不会等于1。但是,我建议不要使用global并且也将Y设为实例变量。最佳做法是在__init__()中初始化变量。 -
感谢大家的帮助和反馈!
标签: python python-3.x class methods