Skip to content

Instantly share code, notes, and snippets.

@ashcrow
Created March 20, 2017 19:15
Show Gist options
  • Save ashcrow/113a1120ee5af122bb00915372d0c070 to your computer and use it in GitHub Desktop.
Save ashcrow/113a1120ee5af122bb00915372d0c070 to your computer and use it in GitHub Desktop.
Example of pylint seing something not promised as a list
import json
class A:
def __init__(self):
self.b = None
@property
def a(self):
if self.b is None:
self.b = json.loads('[]')
return self.b
@a.setter
def a(self):
print('SETTER')
def main():
a = A()
print(a.a)
a.a.append('hi')
print(a.a)
main()
@ashcrow
Copy link
Author

ashcrow commented Mar 20, 2017

E: 22, 4: Method 'a' has no 'append' member (no-member)

@ashcrow
Copy link
Author

ashcrow commented Mar 20, 2017

To ensure that it's always a list:

    @property
    def a(self):
        if self.b is None:
            self.b = json.loads('[]')
        if not isinstance(self.b, list):
            self.b = list(self.b)
        return self.b

@ashcrow
Copy link
Author

ashcrow commented Mar 20, 2017

    @property
    def access_modes(self):
        ''' access_modes property '''
        if self._access_modes == None:
            self._access_modes = self.get_access_modes()
        if not isinstance(self._access_modes, list):
            self._access_modes = list(self._access_modes)
        return self._access_modes

    @access_modes.setter
    def access_modes(self, data):
        ''' access_modes property setter'''
        if not isinstance(data, list):
            data = list(data)
        self._access_modes = data

@kwoodson
Copy link

kwoodson commented Mar 20, 2017

   @property
    def access_modes(self):`
        ''' access_modes property '''
        if self._access_modes is None:
            self._access_modes = self.get_access_modes()
            if not isinstance(self._access_modes, list):
                self._access_modes = list(self._access_modes)

        return self._access_modes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment