开发者

python bind a type to a variable

I am a Python noob.

I create a class as follows:

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

Now contrary to C++ or Java, I do not bind the data type to y while writing the class definition. It is only because the constructor code is such that it shows 开发者_运维百科that y is of type t1. Can we bind a data type while declaring y?


No. Variables in Python do not have types - y does not have a type. At any moment in time, y refers to an object, and that object has a type. This:

y = ''

binds y to an object of type str. You can change it later to refer to an object of a different type. y itself has no intrinsic type.

See Fredrik Lundh's excellent "Reset your brain" article for further explanation.

(By the way, this: self.y = t1.__init__(x) is a rather strange piece of code. Did you mean to say self.y = t1(x)?)


It's out of the scope, but please note:

class A(object):
    x = None

In this context, x is a class variable, not an instance variable and is shared by each instance. It's commonly used in the borg pattern.

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

Here, self.y and self.x are instance variables.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜