No, that won't give the same effect.
collections.namedtuple:
Returns a new tuple subclass named typename...
namedtuple returns a subclass of the tuple type, not a tuple instance.
The name parameter specifies the class name of the new subclass, just as you would define a regular Python class and give it a name:
>>> from collections import namedtuple
>>> namedtuple('Card', ['rank', 'suit'], verbose=True)
class Card(tuple):
'Card(rank, suit)'
__slots__ = ()
_fields = ('rank', 'suit')
def __new__(_cls, rank, suit):
'Create new instance of Card(rank, suit)'
return _tuple.__new__(_cls, (rank, suit))
...
A quick type check clears every doubt:
>>> type(_), issubclass(_, tuple)
(<class 'type'>, True)
So there, you have namedtuple, a factory function that returns a subclass of a tuple.