为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

jay123

为什么不可能在新的对象init方法中让对象方法返回元组作为参数为什么以下代码不起作用,需要做些什么才能使其起作用?

   class AcceptsTupleOnInit:
        def __init__(self,s,z):
            self.s = s
            self.z = z

    class ReturnsTuple:
        def return_tuple(self):
            return ("1", "2")

    r = ReturnsTuple()    
    a = AcceptsTupleOnInit(r.return_tuple())
切普纳

AcceptsTupleOnInit不以元组为参数;它需要两个单独的参数。您需要先打开元组的包装。

a = AcceptsTupleOnInit(*r.return_tuple())

或者,定义__init__接受一个元组

def __init__(self, t):
    self.s = t[0]
    self.z = t[1]

或者更好的方法是,定义一个附加的类方法来为您解压缩元组。

# usage:
# a = AcceptsTupleOnInit.from_tuple(r.return_tuple())
@classmethod
def from_tuple(cls, t):
    return cls(t[0], t[1])

在所有这三种情况下,您都有责任为元组提供至少两个值。的原始定义__init__要求return_tuple提供一个正好包含2个元素的元组修改后__init__的方法和类方法更加灵活,将忽略其他元素。这就是为什么我偏爱原始方法__init__(精确地说明其要求和接受的条件)以及可以根据需要清理输入元组的类方法。您可以选择忽略t[2:],也可以引发异常(如果存在)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

来自分类Java

它是不可能有一个@RequestParam作为一个列表?

来自分类Dev

在Java中的不可变映射中,是否可能有一个不可变的列表作为value字段?

来自分类Dev

一个类中是否可能有多个具有相同名称但参数不同的方法?

来自分类Dev

为什么在 VB.NET 中不可能声明一个 NotOverridable 方法?

来自分类Dev

不可能有一个带有泛型的基于数组的Queue吗?

来自分类Dev

在一个查询中可能有两个之间?

来自分类Dev

在 DAML 中是否有可能有一个通用参数来选择,而模板本身不是通用的?

来自分类Dev

C:是否可能有一个将函数指针数组作为其参数之一的递归函数?

来自分类Dev

一个MySQL语句(SET)中可能有多个用户定义的变量?

来自分类Dev

一个反应组件中可能有两种状态吗

来自分类Java

在Eclipse的一个文件中可能有多个类吗?

来自分类Dev

一个CCLabelTTF中可能有不同的颜色字符串?

来自分类Dev

Swift中是否可能有一个包含通用协议的属性?

来自分类Dev

在Dart中,是否可能有一个const闭包映射?

来自分类Dev

Angular Material工具提示中是否可能有一个列表?

来自分类Dev

在C中可能有一个带条件中断语句的宏

来自分类Dev

一个占位符中是否可能有多种文本颜色?

来自分类Dev

帮助,我可能有一个Rootkit

来自分类Dev

一个信号可能有多个陷阱

来自分类Dev

为什么python的__init__函数没有返回语句,即使它是一个函数

来自分类Dev

执行一个可能有一些参数为空的查询

来自分类Dev

Scala:为什么一个方法不能有多个vararg参数?

来自分类Dev

有可能有一个表函数返回空行?

来自分类Dev

为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径?

来自分类Dev

可能有一个新函数在Golang中分配文件描述符

来自分类Dev

当每个对象可能有一个值列表时创建表

来自分类Dev

一个对象怎么可能有一个属性,但是访问它会导致ReferenceError?

来自分类Dev

Java中是否可能有一个由其他两个地图支持的Map?

Related 相关文章

  1. 1

    为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

  2. 2

    它是不可能有一个@RequestParam作为一个列表?

  3. 3

    在Java中的不可变映射中,是否可能有一个不可变的列表作为value字段?

  4. 4

    一个类中是否可能有多个具有相同名称但参数不同的方法?

  5. 5

    为什么在 VB.NET 中不可能声明一个 NotOverridable 方法?

  6. 6

    不可能有一个带有泛型的基于数组的Queue吗?

  7. 7

    在一个查询中可能有两个之间?

  8. 8

    在 DAML 中是否有可能有一个通用参数来选择,而模板本身不是通用的?

  9. 9

    C:是否可能有一个将函数指针数组作为其参数之一的递归函数?

  10. 10

    一个MySQL语句(SET)中可能有多个用户定义的变量?

  11. 11

    一个反应组件中可能有两种状态吗

  12. 12

    在Eclipse的一个文件中可能有多个类吗?

  13. 13

    一个CCLabelTTF中可能有不同的颜色字符串?

  14. 14

    Swift中是否可能有一个包含通用协议的属性?

  15. 15

    在Dart中,是否可能有一个const闭包映射?

  16. 16

    Angular Material工具提示中是否可能有一个列表?

  17. 17

    在C中可能有一个带条件中断语句的宏

  18. 18

    一个占位符中是否可能有多种文本颜色?

  19. 19

    帮助,我可能有一个Rootkit

  20. 20

    一个信号可能有多个陷阱

  21. 21

    为什么python的__init__函数没有返回语句,即使它是一个函数

  22. 22

    执行一个可能有一些参数为空的查询

  23. 23

    Scala:为什么一个方法不能有多个vararg参数?

  24. 24

    有可能有一个表函数返回空行?

  25. 25

    为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径?

  26. 26

    可能有一个新函数在Golang中分配文件描述符

  27. 27

    当每个对象可能有一个值列表时创建表

  28. 28

    一个对象怎么可能有一个属性,但是访问它会导致ReferenceError?

  29. 29

    Java中是否可能有一个由其他两个地图支持的Map?

热门标签

归档