python类命名空间和init函数

时间:2011-01-05 18:05:45

标签: python class namespaces scope

class Complex:
     realpart,imagpart=0,0
     def __init__(self):
          self.r = Complex.realpart
          self.i = Complex.imagpart

x = Complex()

上面的代码工作,xr,xi =(0,0),但是当类名很大时,Class_name.Data_member访问类数据的方式看起来很冗余,有没有办法改进类的作用域,所以我不必使用Complex.imagpart?只需使用self.r = realpart?

2 个答案:

答案 0 :(得分:1)

这是你想要做的:

class Complex(object):
    def __init__(self, realpart=0, imagpart=0):
        self.realpart = realpart
        self.imagpart = imagpart

访问成员变量是“self.realpart”调用。您使用的是类属性,可以这样访问:

Complex.some_attribute

答案 1 :(得分:0)

没有。您在上面指定的数据成员是该类的属性,因此需要指定类名。如果您愿意,可以使用self.r = self.__class__.realpart。好像你只是将这些值用作初始值设定项,因此realpartimagpart完全是多余的。

(另请注意,Python本身支持复数。只需编写5 + 3j即可。)