【问题标题】:Python __call__ class method position.. Top or bottom of class?Python __call__ 类方法位置.. 类的顶部还是底部?
【发布时间】:2023-01-12 10:41:30
【问题描述】:

嗨,我想知道这是一种“更像 pythonic”的方式来构建一个称呼一个类中的方法。

示例 1:称呼底部的方法:对此的争论是针对“方法论”-称呼在类的末尾 - 因此所有使用的类方法都在上面声明,无论它在哪里被调用。

class Example1(object):
    def __init__(self):
        self.a = 0
        # ... 
        self.z = 26

    def func_1(self):
        # do stuff
        pass
    def func_2(self):
         # do stuff
        pass
    # ...
    def func_n(self):
        # do stuff
        pass

    def __call__(self):
        self.func_1() 
        self.func_2()
        # ... 
        self.func_n()

示例 2:称呼方法在顶部:这个参数是为了“可读性”——所以只要你看到“class-keyword”,你就可以看到在类中调用的步骤

class Example2(object):
    def __call__(self):
        self.func_1()
        self.func_2()
        # ... 
        self.func_n()

    def __init__(self):
        self.a = 0
        # ... 
        self.z = 26

    def func_1(self):
        # do stuff
        pass
    def func_2(self):
         # do stuff
        pass
    # ...
    def func_n(self):
        # do stuff
        pass

人们对此主题的偏好是什么和/或对此是否有任何鼓舞人心的指导方针?

【问题讨论】:

  • 没关系。我不会把一个比另一个称为 pythonic。选择一种风格并坚持使用它以确保项目的一致性。通常我会把__init__放在第一位。
  • 令人惊讶的是,这似乎没有被 PEP8 涵盖。

标签: python


【解决方案1】:

__call__ 之类的魔术(又名 dunder)方法通常放在顶部。本指南提供了一些关于 Python 中这些类型方法的更有用的信息和示例。

__init__ 之类的方法在类中的其他方法之前被调用(甚至 __init__ 前面还有 __new__)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多