【问题标题】:python bind a type to a variablepython将类型绑定到变量
【发布时间】:2011-02-07 20:28:32
【问题描述】:

我是 Python 菜鸟。

我创建一个类如下:

class t1:
    x = ''
    def __init__(self, x):
        self.x = x

class t2:
    y = ''
    z = ''
    def __init__(self, x, y, z):
        self.y = t1.__init__(x)
        self.z = z

现在与 C++ 或 Java 不同,我在编写类定义时不会将数据类型绑定到 y。只是因为构造函数代码表明 y 是 t1 类型。 我们可以在声明 y 的同时绑定数据类型吗?

【问题讨论】:

    标签: python variables


    【解决方案1】:

    超出范围,但请注意:

    class A(object):
        x = None
    

    在这种情况下,x 是一个类变量,而不是一个实例变量,并且由每个实例共享。常用于borg pattern

    class A(object):
        def __init__(self, x):
            self.y = None
            self.x = x
    

    这里,self.y 和 self.x 是实例变量。

    【讨论】:

      【解决方案2】:

      没有。 Python 中的变量没有类型 - y 没有类型。在任何时候,y 引用一个对象,并且该对象具有一个类型。这个:

      y = ''
      

      y 绑定到str 类型的对象。您可以稍后更改它以引用不同类型的对象。 y 本身没有内在类型。

      更多解释请见Fredrik Lundh's excellent "Reset your brain" article

      (顺便说一句,self.y = t1.__init__(x) 是一段相当奇怪的代码。你是说self.y = t1(x) 吗?)

      【讨论】:

      • 不,我的意思是 t1.__init__(x) 没有分配。 self.y = t1(x) 也有意义。谢谢
      • str 类型的对象你的意思是。
      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2020-06-13
      • 1970-01-01
      • 2021-11-30
      相关资源
      最近更新 更多