text: Title: Union + __fields__() has misleading error message
  Body: While the error is misleading (I should fix that), in GraphQL you can't select fields of an union type directly, you must use fragments to select depending on each type you want to handle.
  
  In your case, could you try:
  
  ```py
  import sgqlc
  from sgqlc.operation import Operation
  from sgqlc.types import String, Type, Union, Field, non_null
  
  
  class TypeA(Type):
      i = int
  
  class TypeB(Type):
      s = str
  
  
  class TypeU(Union):
      __types__ = (TypeA, TypeB)
  
  
  class Query(sgqlc.types.Type):
      some_query = Field(non_null(TypeU), graphql_name='someQuery')
  
  
  op = Operation(Query, name="op_name")
  q = op.some_query()
  q.__fields__()  # this line throws 'AttributeError: TypeA has no field name'
  
  # correct behavior would be to:
  q.__as__(TypeA).i()
  ```
  
  _Originally posted by @barbieri in https://github.com/profusion/sgqlc/issues/71#issuecomment-555237354_