diff --git a/google/cloud/datastore/key.py b/google/cloud/datastore/key.py
index d03359b..c9beaeb 100644
--- a/google/cloud/datastore/key.py
+++ b/google/cloud/datastore/key.py
@@ -441,7 +441,9 @@ class Key(object):
         :returns: The last element of the key's path if it is either an ``id``
                   or a ``name``.
         """
-        return self.id or self.name
+        if self.id is None:
+            return self.name
+        return self.id
 
     @property
     def project(self):

diff --git a/tests/unit/test_key.py b/tests/unit/test_key.py
index 73565ea..9d130fb 100644
--- a/tests/unit/test_key.py
+++ b/tests/unit/test_key.py
@@ -488,6 +488,11 @@ class TestKey(unittest.TestCase):
         key = self._make_one("KIND", _NAME, project=self._DEFAULT_PROJECT)
         self.assertEqual(key.id_or_name, _NAME)
 
+    def test_id_or_name_w_id_zero(self):
+        _ID = 0
+        key = self._make_one("KIND", _ID, project=self._DEFAULT_PROJECT)
+        self.assertEqual(key.id_or_name, _ID)
+
     def test_parent_default(self):
         key = self._make_one("KIND", project=self._DEFAULT_PROJECT)
         self.assertIsNone(key.parent)

datastore Key id_or_name() returns None when id is 0
#### Description 
Expecting the Key().is_partial to return False for a Key with id=0.
The is_partial property relies on the id_or_name property.
The id_or_name property returns None when the id=0, which is not expected. Expecting the id to be returned instead.
The id_or_name property implementation is to simple. Should check for None or isinstance(self.id, int)

#### Environment details

  - OS type and version: Ubuntu 20.04
  - Python version: Python 3.8.5
  - pip version: pip 20.2.3
  - `google-cloud-datastore` version: 1.15.3

#### Steps to reproduce

1. Create a datastore key instance with Id = 0
2. Retrieve the id_or_name property, returns None, expected 0.

#### Code example

```python
def test_datastore_key():
    import google.cloud.datastore
    k = google.cloud.datastore.Key('EntityKind', 0, project="unittest")
    assert k.id == 0
    assert k.id_or_name == 0
    assert k.is_partial == False
```

#### Stack trace
```
assert None == 0
  +None
  -0
def test_datastore_key():
        import google.cloud.datastore
        k = google.cloud.datastore.Key('EntityKind', 0, project="unittest")
        assert k.id == 0
>       assert k.id_or_name == 0
E       assert None == 0
E         +None
E         -0
```

tests/unit/test_key.py::TestKey::test_id_or_name_w_id_zero
tests/unit/test_key.py::TestKey::test___eq_____ne___complete_key_w_incomplete_key_same_kind tests/unit/test_key.py::TestKey::test___eq_____ne___incomplete_key_w_complete_key_same_kind tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_id tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_id_different_namespace tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_id_different_project tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_name tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_name_different_namespace tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_and_name_different_project tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_different_ids tests/unit/test_key.py::TestKey::test___eq_____ne___same_kind_different_names tests/unit/test_key.py::TestKey::test___eq_____ne___two_incomplete_keys_same_kind tests/unit/test_key.py::TestKey::test___eq_____ne___w_non_key tests/unit/test_key.py::TestKey::test___hash___completed_w_id tests/unit/test_key.py::TestKey::test___hash___completed_w_name tests/unit/test_key.py::TestKey::test___hash___incomplete tests/unit/test_key.py::TestKey::test__clone tests/unit/test_key.py::TestKey::test__clone_with_parent tests/unit/test_key.py::TestKey::test_completed_key_on_complete tests/unit/test_key.py::TestKey::test_completed_key_on_partial_w_id tests/unit/test_key.py::TestKey::test_completed_key_on_partial_w_invalid tests/unit/test_key.py::TestKey::test_completed_key_on_partial_w_name tests/unit/test_key.py::TestKey::test_ctor_bad_id_or_name tests/unit/test_key.py::TestKey::test_ctor_bad_kind tests/unit/test_key.py::TestKey::test_ctor_empty tests/unit/test_key.py::TestKey::test_ctor_explicit tests/unit/test_key.py::TestKey::test_ctor_no_project tests/unit/test_key.py::TestKey::test_ctor_parent tests/unit/test_key.py::TestKey::test_ctor_parent_bad_namespace tests/unit/test_key.py::TestKey::test_ctor_parent_bad_project tests/unit/test_key.py::TestKey::test_ctor_parent_bad_type tests/unit/test_key.py::TestKey::test_ctor_parent_empty_path tests/unit/test_key.py::TestKey::test_ctor_partial_parent tests/unit/test_key.py::TestKey::test_ctor_w_explicit_project_empty_path tests/unit/test_key.py::TestKey::test_from_legacy_urlsafe tests/unit/test_key.py::TestKey::test_from_legacy_urlsafe_needs_padding tests/unit/test_key.py::TestKey::test_from_legacy_urlsafe_with_location_prefix tests/unit/test_key.py::TestKey::test_id_or_name_no_name_or_id tests/unit/test_key.py::TestKey::test_id_or_name_no_name_or_id_child tests/unit/test_key.py::TestKey::test_id_or_name_w_id_only tests/unit/test_key.py::TestKey::test_id_or_name_w_name_only tests/unit/test_key.py::TestKey::test_is_partial_no_name_or_id tests/unit/test_key.py::TestKey::test_is_partial_w_id tests/unit/test_key.py::TestKey::test_is_partial_w_name tests/unit/test_key.py::TestKey::test_parent_default tests/unit/test_key.py::TestKey::test_parent_explicit_nested tests/unit/test_key.py::TestKey::test_parent_explicit_top_level tests/unit/test_key.py::TestKey::test_parent_multiple_calls tests/unit/test_key.py::TestKey::test_to_legacy_urlsafe tests/unit/test_key.py::TestKey::test_to_legacy_urlsafe_strip_padding tests/unit/test_key.py::TestKey::test_to_legacy_urlsafe_with_location_prefix tests/unit/test_key.py::TestKey::test_to_protobuf_defaults tests/unit/test_key.py::TestKey::test_to_protobuf_w_explicit_namespace tests/unit/test_key.py::TestKey::test_to_protobuf_w_explicit_path tests/unit/test_key.py::TestKey::test_to_protobuf_w_explicit_project tests/unit/test_key.py::TestKey::test_to_protobuf_w_no_kind tests/unit/test_key.py::Test__clean_app::test_already_clean tests/unit/test_key.py::Test__clean_app::test_dev_server tests/unit/test_key.py::Test__clean_app::test_european tests/unit/test_key.py::Test__clean_app::test_standard tests/unit/test_key.py::Test__get_empty::test_actually_set tests/unit/test_key.py::Test__get_empty::test_unset tests/unit/test_key.py::Test__check_database_id::test_empty_value tests/unit/test_key.py::Test__check_database_id::test_failure tests/unit/test_key.py::Test__add_id_or_name::test_add_id tests/unit/test_key.py::Test__add_id_or_name::test_add_name tests/unit/test_key.py::Test__add_id_or_name::test_both_empty_allowed tests/unit/test_key.py::Test__add_id_or_name::test_both_empty_failure tests/unit/test_key.py::Test__add_id_or_name::test_both_present tests/unit/test_key.py::Test__get_flat_path::test_one_pair tests/unit/test_key.py::Test__get_flat_path::test_partial_key tests/unit/test_key.py::Test__get_flat_path::test_two_pairs tests/unit/test_key.py::Test__to_legacy_path::test_one_pair tests/unit/test_key.py::Test__to_legacy_path::test_partial_key tests/unit/test_key.py::Test__to_legacy_path::test_two_pairs