希望有人能帮助我尝试打印类方法的变量。如下面的代码中所示,我想打印方法的变量A" on_status",这是我的类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 ---
答案 0 :(得分:1)
首先,你不应该将你班级的普通方法描述为"类方法"。在Python中,作为"类方法"是一个在类上调用的方法,而不是在类的对象上调用的方法。这些方法是使用@classmethod
decorator定义的,并将类(按约定命名为cls
)而不是对象(按约定命名为self
)作为其第一个参数。 (因此,MyStreamListener
类方法可以被称为MyStreamListener.my_class_method()
或myStreamListener.my_class_method()
,其中myStreamListener
是MyStreamListener
类型的对象。)
其次,如果在方法中分配变量self.A
,则该变量属于对象,而不是方法,并且可以在对象可用的任何位置访问,如object_var.A
,其中{ {1}}是保存对象的变量。如果您在某个方法中,则可以使用object_var
。如果您刚刚将您的班级实例化为self.A
的客户端代码,那么您将使用myStreamListener
。
第三,如果您将从myStreamListener.A
之外的A
访问on_status
,它可能尚未初始化,您应该在__init__
中使用一些合理的价值对其进行初始化。