Python类命名空间和初始化函数

1 投票
2 回答
794 浏览
提问于 2025-04-16 09:27
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 这种写法。不过看起来你只是把这些值当作初始值来用,所以其实有 realpartimagpart 这两个东西是多余的。

(另外,注意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

撰写回答