I believe it's because torch.LongTensor has no __init__ method for pycharm to find.
According to this source that I found thanks to this SO post :
Use __new__ when you need to control the creation of a new instance.
Use __init__ when you need to control initialization of a new instance.
__new__ is the first step of instance creation. It's called first,
and is responsible for returning a new instance of your class. In
contrast, __init__ doesn't return anything; it's only responsible for
initializing the instance after it's been created.
In general, you shouldn't need to override __new__ unless you're
subclassing an immutable type like str, int, unicode or tuple.
Since Tensors are types, it makes sense to define only new and no init.
You can experiment this behavior by testing the following classes :
torch.LongTensor(1) # Unexpected arguments
Produces the warning while the following doesn't.
class MyLongTensor(torch.LongTensor):
def __init__(self, *args, **kwargs):
pass
MyLongTensor(1) # No error
To confirm that the absence of __init__ is the culprit try :
class Example(object):
pass
Example(0) # Unexpected arguments
To find out by yourself, use pycharm to Ctrl+click on LongTensor then _TensorBase and look at the defined methods.