Home > Software engineering >  specify the type inside a class method
specify the type inside a class method

Time:10-23

What is the pythonic way to properly specify the type of the arguments of a method?

Checking How do Python functions handle the types of the parameters that you pass in? and How do I ensure parameter is correct type in Python? only works for primitive data types.

Consider the minimum following example, where I want to pass an object of same type to the method. This does not work because the method is defined inside the class.

class num:
    def __init__(self,val:int) -> None:
        self.x=val
    def print(self,other:num) -> None:
        pass

def main():
    n=num(3)
    n.print()

main()

CodePudding user response:

You can use forward references:

class num:
    def __init__(self,val:int) -> None:
        self.x=val
    def print(self,other:'num') -> None:
        pass

This works because Python (and any checkers complying to PEP 484) will understand your hint and register it appropriately, this is a common scenario.

  • Related