New submission from jeffersonqin <1247006...@qq.com>:

For the following code piece:

```
import pickle

class Child:
        def __init__(self, field):
                self.field = field

class Parent:
        child = Child(0.5)

if __name__ == '__main__':
        i = input()
        if i == 'd':
                parent = Parent()
                parent.child.field = 0.6
                pickle.dump(parent, open('test.pkl', 'wb+'))
        else:
                parent = pickle.load(open('test.pkl', 'rb'))
                print(parent.child.field)
```

After dumping, when we load the file throught `pickles.load`, 
`parent.child.field` is 0.5, and is not 0.6, which we intend it to be.

However, after removing the line `child = Child(0.5)` and moving it to 
`__init__(self)` of `Parent`, everything works fine.

I'm not sure whether this is indeed an issue. If not, sorry for take your time.

----------
components: Library (Lib)
files: test.py
messages: 415341
nosy: jeffersonqin
priority: normal
severity: normal
status: open
title: pickle not working correctly when custom field is directly initialized 
by constructors
type: behavior
versions: Python 3.9
Added file: https://bugs.python.org/file50682/test.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue47034>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to