简体   繁体   中英

Code completion for defining a method outside of class definition?

I want to use multiple methods outside of classes. How to define a method outside of a class definition is already answered here .

It seems like a small afterthought, but the brackets for autocompletion and arguments disappear as a result, because it is seen as a field now. As I want to create a bulk of methods that are going to be used frequently, it would be nice to have it show the autocompletion and arguments again. Here is an example of what it's showing, I would like it to autocomplete with brackets and the respective arguments, as you can see with the __dir__(self) function. And here is the code:

from dataclasses import dataclass

def get_dap(self):
    pass

@dataclass
class Country:
    ctr_cc: str
    ctr_code: str
    ctr_name: str
    dap = get_dap

@dataclass
class Region(Country):
    reg_code: str
    reg_name: str
    dap = get_dap

dk1 = Region(ctr_cc="DK", ctr_code="DENMARK", ctr_name="Denmark", reg_code="DK1", reg_name="East Denmark")
dk1.get_dap()

I have tried to use some type hinting but I have yet to find a solution.

Thanks to @Anentropic I was able to answer my own question ( screenshot with autocompletion ):

from dataclasses import dataclass

class GetMixin:
    def get_dap(self):
        pass

@dataclass
class Country:
    ctr_cc: str
    ctr_code: str
    ctr_name: str


@dataclass
class Region(GetMixin, Country):
    reg_code: str
    reg_name: str

if __name__ == '__main__':
    dk1 = Region(ctr_cc="DK",
                 ctr_code="DENMARK",
                 ctr_name="Denmark",
                 reg_code="DK1",
                 reg_name="East Denmark")
    dk1.get_dap()

Using a mixin and inheriting it in your preferred classes provides a better method for reuse and allows for autocompletion.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM