Python类命名空间和初始化函数
class Complex:
realpart,imagpart=0,0
def __init__(self):
self.r = Complex.realpart
self.i = Complex.imagpart
x = Complex()
上面的代码可以正常运行,x.r和x.i都被设置为(0,0)。不过,当类的名字比较长时,像Class_name.Data_member这样的方式来访问类的数据就显得很繁琐。有没有什么办法可以简化类的作用域,这样我就不需要用Complex.imagpart,而只用self.r = realpart就可以了?
2 个回答
0
不行。你上面提到的数据成员是这个类的属性,所以需要指定类名。如果你愿意,可以用 self.r = self.__class__.realpart
这种写法。不过看起来你只是把这些值当作初始值来用,所以其实有 realpart
和 imagpart
这两个东西是多余的。
(另外,注意Python本身就支持复数。你只需要像这样写:5+3j。)
1
你想要做的事情是这样的:
class Complex(object):
def __init__(self, realpart=0, imagpart=0):
self.realpart = realpart
self.imagpart = imagpart
访问成员变量的方法是用“self.realpart”这个调用。你之前使用的是类属性,访问类属性的方式是这样的:
Complex.some_attribute