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

开发者社区> 问答> 正文

类型提示__call __()magic method

2019-01-22 11:33:11 1298 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 100浏览量 回答数 0

1

回答

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

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

2

回答

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

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

2

回答

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

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

2

回答

企业邮箱常见错误提示534 Message is too long

2018-01-29 11:00:59 2990浏览量 回答数 2

1

回答

linux下yum install mod_ssl –y 出错

2016-07-13 11:35:22 3522浏览量 回答数 1

0

回答

邮箱提示系统错误 求解决

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

2

回答

阿里云企业邮箱绑定手机提示手机绑定多次换手机号

2015-11-13 21:36:25 5869浏览量 回答数 2

1

回答

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

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

1

回答

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

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