jonathan created THRIFT-4281:

             Summary: Got a NameError when using class defined in
                 Key: THRIFT-4281
             Project: Thrift
          Issue Type: Bug
          Components: Python - Compiler
    Affects Versions: 0.9.2
         Environment: Thrift version 0.9.2
            Reporter: jonathan

Here the problem happens.
See the error first:
    from ttypes import *
  File "../gen-py-ofs/ofs/", line 200, in <module>
    class FeatureGetParams:
  File "../gen-py-ofs/ofs/", line 210, in FeatureGetParams
    (2, TType.LIST, 'featureScenes', (TType.STRUCT,(FeatureScene, 
FeatureScene.thrift_spec)), None, ), # 2
*{color:red}NameError: name 'FeatureScene' is not defined{color}*

Class FeatureScene is defined in line 391 of, and is used by another 
class GetParams in line of 200. Then I got this error.
I have a test.
If I move class FeatureScene to the front of class FeatureGetParams, the error 
is gone.
I googled character of language Python, it did happen in this situation that we 
must define it at the place before we reference it.
So I have a question, if it's true, why doesn't generate two classes 
in the correct order?
It confused me for a while. Hope get your reply, thank you.

Defined in line 391:
class FeatureScene:
   - featureSceneType
   - featureKeys

  thrift_spec = (
    None, # 0
    (1, TType.I32, 'featureSceneType', None, None, ), # 1
    (2, TType.LIST, 'featureKeys', (TType.STRING,None), None, ), # 2

Defined in line 200:
class GetParams:
   - orderId
   - featureScenes

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.LIST, 'featureScenes', (TType.STRUCT,(FeatureScene, 
FeatureScene.thrift_spec)), None, ), # 2

This message was sent by Atlassian JIRA

Reply via email to