Объекты метода создаются каждый раз, когда вы обращаетесь к ним . Функции действуют как дескрипторы , возвращая объект метода, когда вызывается метод .__get__
:
>>> What.__dict__['meth']
>>> What.__dict__['meth'].__get__(None, What)
>>> What.__dict__['meth'].__get__(What(), What)
>
Вместо этого используйте проверку равенства ==
.
Два метода равны, если их атрибуты .im_self
и .im_func
идентичны. Если вам нужно проверить, что методы представляют одну и ту же основную функцию , проверьте их атрибуты im_func
:
>>> What.meth == What.meth # unbound methods (or functions in Python 3)
True
>>> What().meth == What.meth # unbound method and bound method
False
>>> What().meth == What().meth # bound methods with *different* instances
False
>>> What().meth.im_func == What().meth.im_func # functions
True
При передаче обновления у меня неправильно объявлялся объект в резольверах. А также мне не хватало typeName в этом объекте. Правильный синтаксис был:
updatePersonDetails: (
_,
{persondetails, age, empId},
{cache}
) => {
cache.writeFragment({
id: `validationType:${age}!${empId}`,
fragment: gql`
fragment updatePersonDetails on validationType {
persondetails {
first
last
age
empId
__typename
}
__typename
}
`,
data: {
persondetails: {
...persondetails,
__typename: 'persondetailsType'
}
__typename: 'validationType'
}
});