You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King III (JIRA)" <ji...@apache.org> on 2019/01/26 14:51:00 UTC
[jira] [Closed] (THRIFT-1088) Thrift library python classes should
be new-style classes
[ https://issues.apache.org/jira/browse/THRIFT-1088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King III closed THRIFT-1088.
-------------------------------------
Resolution: Duplicate
Assignee: James E. King III
Fix Version/s: 0.10.0
> Thrift library python classes should be new-style classes
> ---------------------------------------------------------
>
> Key: THRIFT-1088
> URL: https://issues.apache.org/jira/browse/THRIFT-1088
> Project: Thrift
> Issue Type: Improvement
> Components: Python - Library
> Affects Versions: 0.6
> Reporter: Will Pierce
> Assignee: James E. King III
> Priority: Minor
> Fix For: 0.10.0
>
> Attachments: THRIFT-1088_pthon_new_style_classes.patch, THRIFT-1088_python_new_style_classes_v2.patch, perftest.py, runtest.sh, runtest2.sh
>
>
> The included python thrift library classes (TType, TProtocolBase, etc...) are all defined using old-style python class definitions. This makes it somewhat more difficult to dynamically deal with instances of those classes at runtime, since the type() builtin doesn't return the class name. I don't think there's really any good reason for avoiding using new style classes. The typical fear/uncertainty/doubt with new-style classes (since 2001 when they were made available in python 2.2) is that they are thought to be slower than old-style classes. I personally haven't ever found the performance difference between old and new style classes to
> Unless there's a compelling reason that Thrift developers want to use old-style classes, I think it's a more programmer-friendly choice to switch these to new-style classes. Not to mention the benefits that new style classes provide, see: http://realmike.org/blog/2010/07/18/introduction-to-new-style-classes-in-python/
> The following thrift classes don't inherit from the 'object' class, so are old-style classes:
> {noformat}
> % find . -name \*py | xargs grep class | grep -v [.]svn | grep '[a-zA-Z0-9]:$'
> ./src/protocol/TCompactProtocol.py:class CompactType:
> ./src/protocol/TCompactProtocol.py:class TCompactProtocolFactory:
> ./src/protocol/TProtocol.py:class TProtocolBase:
> ./src/protocol/TProtocol.py:class TProtocolFactory:
> ./src/protocol/TBinaryProtocol.py:class TBinaryProtocolFactory:
> ./src/protocol/TBinaryProtocol.py:class TBinaryProtocolAcceleratedFactory:
> ./src/Thrift.py:class TType:
> ./src/Thrift.py:class TMessageType:
> ./src/Thrift.py:class TProcessor:
> ./src/server/TServer.py:class TServer:
> ./src/server/TNonblockingServer.py:class Connection:
> ./src/server/TNonblockingServer.py:class TNonblockingServer:
> ./src/transport/TTransport.py:class TTransportBase:
> ./src/transport/TTransport.py:class CReadableTransport:
> ./src/transport/TTransport.py:class TServerTransportBase:
> ./src/transport/TTransport.py:class TTransportFactoryBase:
> ./src/transport/TTransport.py:class TBufferedTransportFactory:
> ./src/transport/TTransport.py:class TFramedTransportFactory:
> {noformat}
> I'll make changes to my local copy of trunk, run the tests and then attach a patch to this ticket for evaluation.
> Unless anyone has objections or concerns about switching to new style classes?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)