Comments (5)
Also, this creates disambiguations:
>>> import addict
>>> addict.__version__
'2.1.1'
>>> from addict import Dict
>>> l = [1, 2, 3]
>>> d = Dict(l=l)
>>> d.l
[1, 2, 3]
>>> d.l is l
False
>>> d.l = l
>>> d.l is l
True
>>>
from addict.
This is more of documentation issue than a bug.
Dict() copies dict/list/tuple structure so this is expected behaviour.
def test_recursive_wrapping_refs(self):
d = Dict(a=1, b=2)
a = Dict(d=d)
c = Dict(d=d)
c.d.z = 3
self.assertDictEqual(a.d, d)
self.assertDictContainsSubset(d, c.d)
self.assertIsNot(a.d, d)
self.assertIsNot(c.d, d)
from addict.
It is implicit copying. Don't you think explicit using of copy
module will be more pythonic, so Dict
behavior will be closer to dict
.
from addict.
Hey @pohmelie,
I understand that the behavior is a bit confusing. It's an attempt to balance between expectations of the addict
module. Today, whatever you give addict
in the constructor will be recursively iterated over and any dict
will be turned into a Dict
. In contrast, whatever you set as an attribute on the Dict
instance will not be copied. While this is the way we intended it to work, it can lead to surprises.
At this point, I am leaning towards moving today's __init__
-functionality in it's own static method, say Dict.from_dict
, and let __init__
do as you expect over. This would however warrant a major release.
Thanks @egao1980 for stepping in and answering questions! 👍
from addict.
hello @mewwts is the new from_dict
method already available? I think it could greatly improve the reading of the code, so if it's not done, I think it would be a great idea!
from addict.
Related Issues (20)
- confuse with int HOT 1
- Is it possible to forbid accessing missing keys? HOT 4
- Dict adds quote when retrieving str values HOT 1
- Dict() inconsistent with dict() initialization HOT 4
- Adding support for merge operator `|` and `|=` (as python 3.9 dict merge) HOT 1
- Maintainership & Altrenatives HOT 4
- 'function' object has no attribute when using freeze as a field
- Dict.__missing__ implementation leads to surprising behaviour HOT 1
- google-colab 1.0.0 has requirement ipykernel~=4.10 HOT 1
- copy broken by 2.4.0 HOT 1
- Arrays in dictionaries, how to denote HOT 1
- Shouldn't dictionary keys be encapsulated with u''? Isn't everything in python 3 Unicode?
- Suggestion on attributes containing dashes
- Dict Attributes not available to Autocomplete and not present in __dict__ HOT 4
- have stubs for minimal type annotation on addict
- Somehow inherit from TypedDict
- Keys starting with __ can't be referenced with dotted notation inside an object
- Creating a Dict from instances of classes that inherit from NamedTuple
- Support inheritance in merge operators `|` and `|=`
- Consider changing the "About" line for this repo?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from addict.