gpt4 book ai didi

带有使用self的静态方法的python静态类?

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:59 24 4
gpt4 key购买 nike

我正在 pycassa 中执行数据库插入脚本。我想设置一个公共(public)静态类,它定义了一些稍后将被其他函数大量使用的变量。这是我所拥有的...

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(以及更多稍后的内容)。

我知道我可以把那个方法放在类之外,或者我可以有这个非静态的并创建它的一个实例,但我想试试这个,因为这是我真正想要的(在我只使用全局变量之前,但是我认为一个包含所有这些的静态类是最好的主意)

最佳答案

我想你想要一个方法来代替:

@classmethod
def cf_connect(cls, column_family):
cf = pycassa.ColumnFamily(cls.pool, column_family)
return cf

现在您可以轻松引用类中定义的池。

但是,您的 user_name_cfuser_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')

关于带有使用self的静态方法的python静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com