diff --git a/CHANGES.rst b/CHANGES.rst
index 8f65c20..971a172 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -3,6 +3,9 @@ unreleased
 
 - Add support for Python 3.7.
 
+- Fix an issue where two different service classes with the same name would
+  be treated as the same service, defeating the type-based lookup.
+
 0.1.1 (2018-08-04)
 ==================
 
diff --git a/src/wired/container.py b/src/wired/container.py
index 84d7726..37ea146 100644
--- a/src/wired/container.py
+++ b/src/wired/container.py
@@ -418,9 +418,10 @@ def _iface_for_type(obj):
         return iface
 
     # make a new iface and cache it on the object
-    name = obj.__name__
+    name = obj.__qualname__
     iface = InterfaceClass(
-        '%s_IService' % name, __doc__='service_factory generated interface'
+        '%s_%s_IService' % (name, id(obj)),
+        __doc__='service_factory generated interface',
     )
     obj._service_iface = iface
     return iface

Lookup by class (instead of name) doesn't use fully qualified name
I just did this in a test and was surprised it passed:

```python
# from wired.samples.simple_factory import Greeter
class Greeter:
    pass
factory = registry.find_factory(Greeter)
```

I have a registry with wired.samples.simple_factory.Greeter registered. I made a local Greeter, expecting it to fail on lookup. It passed. 

It appears `wired` only uses the class name, thus two different classes, same name but different modules/packages, would be considered "the same".

diff --git a/tests/test_container.py b/tests/test_container.py
index a27c16b..144ce00 100644
--- a/tests/test_container.py
+++ b/tests/test_container.py
@@ -204,3 +204,16 @@ def test_unregistered_lookup(registry):
     with pytest.raises(LookupError):
         c.get(IBarService)  # IFooService is not specific enough
     assert c.get(IBarService, default=marker) is marker
+
+
+def test_unique_class_objects_with_same_name_dont_conflict(registry):
+    def make_class():
+        class Greeter:
+            pass
+
+        return Greeter
+
+    ClassA = make_class()
+    ClassB = make_class()
+    registry.register_singleton(ClassA(), ClassA)
+    assert registry.find_factory(ClassB) is None

pip install -e .[testing]
parse_log_pytest
pytest
pytest pytest-cov
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov==6.0.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
-e git+https://github.com/mmerickel/wired.git@f6367cc7c9566e4bf42ecefaa33f07fa5bef692c#egg=wired
zope.interface==7.2

name: wired
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - pytest-cov==6.0.0
      - wired==0.1.1
      - zope-interface==7.2
prefix: /opt/conda/envs/wired

tests/test_container.py::test_unique_class_objects_with_same_name_dont_conflict
tests/test_container.py::test_sentinel_repr tests/test_container.py::test_various_params[contexts0--Interface] tests/test_container.py::test_various_params[contexts0--IFooService] tests/test_container.py::test_various_params[contexts0--DummyService] tests/test_container.py::test_various_params[contexts0-foo-Interface] tests/test_container.py::test_various_params[contexts0-foo-IFooService] tests/test_container.py::test_various_params[contexts0-foo-DummyService] tests/test_container.py::test_various_params[contexts1--Interface] tests/test_container.py::test_various_params[contexts1--IFooService] tests/test_container.py::test_various_params[contexts1--DummyService] tests/test_container.py::test_various_params[contexts1-foo-Interface] tests/test_container.py::test_various_params[contexts1-foo-IFooService] tests/test_container.py::test_various_params[contexts1-foo-DummyService] tests/test_container.py::test_various_params[contexts2--Interface] tests/test_container.py::test_various_params[contexts2--IFooService] tests/test_container.py::test_various_params[contexts2--DummyService] tests/test_container.py::test_various_params[contexts2-foo-Interface] tests/test_container.py::test_various_params[contexts2-foo-IFooService] tests/test_container.py::test_various_params[contexts2-foo-DummyService] tests/test_container.py::test_various_params[contexts3--Interface] tests/test_container.py::test_various_params[contexts3--IFooService] tests/test_container.py::test_various_params[contexts3--DummyService] tests/test_container.py::test_various_params[contexts3-foo-Interface] tests/test_container.py::test_various_params[contexts3-foo-IFooService] tests/test_container.py::test_various_params[contexts3-foo-DummyService] tests/test_container.py::test_basic_caching tests/test_container.py::test_basic_singletons tests/test_container.py::test_bind_context tests/test_container.py::test_different_contexts_in_nested_lookup tests/test_container.py::test_override_cache_via_set tests/test_container.py::test_override_cache_via_set_fails tests/test_container.py::test_find_factory tests/test_container.py::test_unregistered_factory_lookup tests/test_container.py::test_unregistered_lookup
src/wired/container.py CHANGES.rst
src/wired/container.py CHANGES.rst