如何获得所有类方法

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

我有以下课程:

class DBManagerInterface:

    @abstractmethod
    def __init__(self, table_name): raise NotImplementedError

    @abstractmethod
    def create_table(self): raise NotImplementedError

    @abstractmethod
    def drop_table(self): raise NotImplementedError



class DataBaseManager(DBManagerInterface):

    def __init__(self, table_name):
        self.table_name = table_name

    def drop_table(self):
        None

    def create_table(self):
        None


class Example:

def __init__(self, db_manager):
    self.db_manager = db_manager

def test(self):
    self.db_manager.create_table() # can't see the db_manager methods

Example类中,我得到了DataBaseManager指针。

我将无法看到所有的DataBaseManager方法(无需在DataBaseManager.py文件中手动搜索它们)

我正在使用python 3.5.2pycharm编辑器

有可能吗?

python pycharm
2个回答
0
投票

PyCharm不知道db_manager可能是什么,因此它无法为您提供编辑提示。

如果您的环境支持,请注释该参数,PyCharm可以从那里进行类型推断:

    def __init__(self, db_manager: DBManagerInterface):
        self.db_manager = db_manager

或者如果不支持,则可以在文档字符串中添加注释:

    def __init__(self, db_manager):
        """
        :type db_manager: DBManagerInterface
        """
        self.db_manager = db_manager

0
投票

尝试print(dir(DataBaseManager))

来自docs:

不带参数,返回当前本地范围内的名称列表。使用一个参数,尝试返回该对象的有效属性列表。

dir([object])

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