# How to treat Python namedtuple-inherited class in PyCall

**URL:** https://discourse.julialang.org/t/how-to-treat-python-namedtuple-inherited-class-in-pycall/48197
**Category:** General Usage
**Tags:** question, pycall
**Created:** [October 12, 2020, 6:57am UTC](https://discourse.julialang.org/t/how-to-treat-python-namedtuple-inherited-class-in-pycall/48197 "2020-10-12T06:57:30Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![paalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paalon/32/5784_2.png) [@paalon](https://discourse.julialang.org/u/paalon)
#### Post date: [October 12, 2020, 6:57am UTC](https://discourse.julialang.org/t/how-to-treat-python-namedtuple-inherited-class-in-pycall/48197/1 "2020-10-12T06:57:30Z")

</div>

How to let not to automatically convert Python namedtuple-inherited class to Julia tuple in PyCall? The following documents have the example such situation:

[https://pytorch.org/docs/stable/generated/torch.nn.utils.rnn.pad\_packed\_sequence.html?highlight=pad\_packed\_sequence#torch.nn.utils.rnn.pad\_packed\_sequence](https://pytorch.org/docs/stable/generated/torch.nn.utils.rnn.pad_packed_sequence.html?highlight=pad_packed_sequence#torch.nn.utils.rnn.pad_packed_sequence)

Python Code:

```python
import torch
from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence
seq = torch.tensor([[1,2,0], [3,0,0], [4,5,6]])
lens = [2, 1, 3]
packed = pack_padded_sequence(seq, lens, batch_first=True, enforce_sorted=False)
packed
seq_unpacked, lens_unpacked = pad_packed_sequence(packed, batch_first=True)
seq_unpacked
lens_unpacked

```

Julia Code:

```julia
using PyCall
torch = pyimport_conda("torch", "pytorch", "pytorch")
pack_padded_sequence = torch.nn.utils.rnn.pack_padded_sequence
pad_packed_sequence = torch.nn.utils.rnn.pad_packed_sequence
seq = torch.tensor([[1,2,0], [3,0,0], [4,5,6]])
lens = [2, 1, 3]
# Here I expect PackedSequence, which is Python namedtuple-inherited class
# but converted to Julia tuple
packed = pack_padded_sequence(seq, lens, batch_first=true, enforce_sorted=false)
# Fails because packed has no attribute
seq_unpacked, lens_unpacked = pad_packed_sequence(packed, batch_first=true)
seq_unpacked
lens_unpacked

```

It seems that [this issue](https://github.com/JuliaPy/PyCall.jl/issues/175) is related, but it’s very old.
