如何使pycharm自动建议由元类修改的类的功能

问题描述 投票:0回答:1

为了简化代码处理数据库表,我写了一个metaClass工厂,如下所示:

#metaClass factory
def base_service(clz_of_model):

  @db.transactional
  def add(self, obj):
    m = clz_of_model(**obj)
    db.session.add(m)
    return m

  class BaseService(type):
     def __new__(mcs, name, base, attrs):
        attrs["add"] = add
        return super().__new__(mcs, name, base, attrs)

  return BaseService

#define a model
class UserModel(Base):
   #....

#define a service
class UserService(object,metaclass=base_service(UserModel):
   #....

#using service
user_service=UserSerivce()
user_service.add({"name":'tom'})

该代码确实有效,但不便之处是:

当我输入“ user_servce”时。在Pycharm中,IDE不会建议user_service具有由metaClass定义的“添加”功能。

Pycharm的建议如何运作?我可以使用python的元类有更好的解决方案吗?

为了简化代码处理数据库表,我写了一个metaClass工厂,如下所示:#metaClass factory def base_service(clz_of_model):@ db.transactional def add(self,obj):m = clz_of_model(** ...

pycharm metaclass
1个回答
0
投票

您不能。

由于这个简单的原因,它不能被静态检测到-也不是,也不是将动态方法和属性添加到类的其他数十种方法。

© www.soinside.com 2019 - 2024. All rights reserved.