代码之家  ›  专栏  ›  技术社区  ›  marcin2x4

Python-在self中未使用init参数

  •  -1
  • marcin2x4  · 技术社区  · 3 年前

    我得到了一个代码,希望在何时使用这种安排上有更多的了解。 不使用的好场景是什么 __init__ 的参数( name )在 self ?

    class ArgumentNotUsedInSelf:
        def __init__(self, name: str):
            self.type = "user"
    
    user_one = ArgumentNotUsedInSelf("Mike")
    print(user_one.type)
    

    欢迎从架构(而不仅仅是)角度进行任何解释!谢谢

    3 回复  |  直到 3 年前
        1
  •  4
  •   Barmar    3 年前

    其中一些原因可能是:

    • 历史的该类过去使用该参数,但它已更改,因此不再有意义。保留该论点是为了向后兼容。
    • 类层次结构。这可能是使用参数的类的子类,但子类覆盖了对参数的需要。参数是与父级兼容所必需的。
        2
  •  1
  •   BeRT2me    3 年前

    有点像巴尔马的历史例子。。。比如说:

    • ArgumentNotUsedInSelf 用来做某事 name ,但现在没有。
    • 但是 名称 仍在中使用 SubClass 而改变一切可能会打乱依赖程序。
    class ArgumentNotUsedInSelf:
        def __init__(self, name: str):
            self.type = "user"
    
    class SubClass(ArgumentNotUsedInSelf):
        def __init__(self, name):
            super(SubClass, self).__init__(name)
            self.name = name
    
    x = SubClass('Mike')
    print(x.name, x.type)
    

    输出:

    Mike user
    
        3
  •  -3
  •   adilmrk    3 年前

    如果您想存储所创建对象的字段“name”并在以后重新使用,这将非常有用:

    class ArgumentNotUsedInSelf:
        def __init__(self, name: str):
            self.type = "user"
            self.name = name
    
    user_one = ArgumentNotUsedInSelf("Mike")
    print(user_one.type)
    print(user_one.name)