类型提示__call __()magic method-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

类型提示__call __()magic method

2019-01-22 11:33:11 1316 1

我使用一个简单但功能强大的类,它充当数据库表,内置过滤器方法。这是它的一小部分。

PyCharm没有显示#3的类型提示。

from dataclasses import dataclass

@dataclass
class Record:

ID: int

class Table(list):

"""Like a database table.

Usage:
table = Table([Record(123), ...])
>> table.filter(123)
Record(123)
"""
def __call__(self, ID) -> Record:
    return self.filter(ID)

def filter(self, ID) -> Record:
    return Table(x for x in self if x.ID == ID)[0]

table = Table([Record(123)])

table[0]. # 1. This works. ".ID" Pops up after typing the period.
table.filter(123). # 2. This works too.
table(123). # 3. Crickets :-(. Nothing pops up after typing the period.
我做错了什么或者这是PyCharm中的错误?

取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:12

    问题似乎是Table子类list。如果我们实现所需的容器方法Table而不是子类化,list那么自动完成按预期工作,例如:

    from dataclasses import dataclass

    @dataclass
    class Record:

    ID: int
    

    class Table:

    def __init__(self, items):
        ...
    
    def __getitem__(self, ID) -> Record:
        ...
    
    def __call__(self, ID) -> Record:
        return self.filter(ID)
    
    def filter(self, ID) -> Record:
        return Table(x for x in self if x.ID == ID)[0]
    

    table = Table([Record(123)])
    table[0]. # works
    table.filter(123). # works
    table(123). # works
    我在PyCharm Professional 2018.3.2上测试过。

    0 0
相关问答

0

回答

阿里云的数据库系统怎么升级更新的www.zgysffm.com怎么加快访问速度?

2022-07-28 16:25:23 126浏览量 回答数 0

1

回答

Task Container 被Kill, Managed memory使用情况查看有问题?

2021-12-02 14:09:35 572浏览量 回答数 1

1

回答

类(Class)不是Python的数据类型,这是正确的吗?

2021-11-02 22:29:53 265浏览量 回答数 1

2

回答

阿里云的C6与C6e有什么区别?

2021-02-09 21:12:27 735浏览量 回答数 2

1

回答

求助!小白不会将github上的代码git clone到阿里云

2020-01-01 23:36:48 721浏览量 回答数 1

2

回答

阿里云ECS Linux服务器用Putty进行SSH连接超时(Network error:Conection timed out)

2018-11-15 21:39:10 8564浏览量 回答数 2

2

回答

在Mac上面就是添加不了阿里云的邮箱怎么办?

2016-07-19 23:11:56 5204浏览量 回答数 2

0

回答

邮箱提示系统错误 求解决

2016-01-28 15:58:10 3540浏览量 回答数 0

1

回答

求助:阿里云邮箱显示出现未知错误

2015-06-19 14:14:54 3030浏览量 回答数 1

1

回答

求助!邮箱提示未知错误,发不出去!

2015-05-20 17:30:28 3514浏览量 回答数 1
47
文章
723
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载