V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
firejoke
V2EX  ›  Python

源码中这个场景,用 staticmethod 有很大的必要性吗?

  •  
  •   firejoke · Jan 10, 2019 · 1793 views
    This topic created in 2664 days ago, the information mentioned may be changed or developed.

    基类:

    class Schema(object):
    
    ......
    
        def filter(self, obj):
            filtered = {}
            for key, value in six.iteritems(obj):
                if self._filter_func(self.properties, key):
                    filtered[key] = value
    
    ......
    
        @staticmethod
        def _filter_func(properties, key):
            return key in properties
    

    其中一个重写了该方法的子类:

    class PermissiveSchema(Schema):
        @staticmethod
        def _filter_func(properties, key):
            return True
    

    感觉上完全不需要改成 staticmethod
    反正最终还是需要传类的属性进去

    2 replies    2019-01-10 17:35:01 +08:00
    xpresslink
        1
    xpresslink  
       Jan 10, 2019   ❤️ 1
    完全没有必要,python 中 staticmethod 很少用到,只是当成类的不同工厂函数时候用一下的情况比较多。
    firejoke
        2
    firejoke  
    OP
       Jan 10, 2019
    @xpresslink 我也是觉得完全不必改成 staticmethod, 但源码中大量的工厂和抽象工厂,ABC 基类到处飞,
    让我深深怀疑自己没有坐着考虑的深,不敢去质疑作者......
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3574 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:09 · PVG 19:09 · LAX 04:09 · JFK 07:09
    ♥ Do have faith in what you're doing.