我正在pycassa中执行数据库插入脚本。我想设置一个公共静态类,它定义了一些变量,这些变量稍后会被其他函数大量使用。继承人我拥有的......
class ks_refs():
pool = ConnectionPool('TweetsKS')
user_name_cf = self.cf_connect('UserName')
user_tweet_cf = self.cf_connect('UserTweet')
def cf_connect(column_family):
cf = pycassa.ColumnFamily(self.pool, column_family)
return cf
我还没有尝试过这个,因为我确定它不会工作。你可以看到我首先想要这个静态变量'pool',然后使用需要'pool'工作的cf_connect方法设置user_name_cf和user_tweet_cf(以及更晚一些)。
我知道我可以把这个方法放在类之外,或者我可以使用这个非静态并创建它的实例,但我想尝试这个,因为这是我真正想要的(在我使用全局变量之前)我认为一个包含所有这一切的静态类是最好的主意)
答案 0 :(得分:5)
我想你想要一个 class 方法:
@classmethod
def cf_connect(cls, column_family):
cf = pycassa.ColumnFamily(cls.pool, column_family)
return cf
现在,您可以轻松地参考课程中定义的池。
但是,user_name_cf
和user_tweet_cf
'属性'不起作用。您可以在创建类定义后添加这些:
class ks_refs():
pool = ConnectionPool('TweetsKS')
@classmethod
def cf_connect(cls, column_family):
cf = pycassa.ColumnFamily(cls.pool, column_family)
return cf
user_name_cf = ks_refs.cf_connect('UserName')
user_tweet_cf = ks_refs.cf_connect('UserTweet')
它们是模块级常量,或者你可以在事后将它们作为属性添加到类中:
ks_refs.user_name_cf = ks_refs.cf_connect('UserName')
ks_refs.user_tweet_cf = ks_refs.cf_connect('UserTweet')