пространство имен класса Python и функция инициализации - PullRequest
1 голос
/ 05 января 2011
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 ]

1 голос
/ 05 января 2011

Это то, что вы хотите сделать:

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

Доступ к переменным-членам - это вызов self.realpart.То, что вы использовали, это атрибуты класса, доступ к которым осуществляется следующим образом:

Complex.some_attribute
0 голосов
/ 05 января 2011

Нет. Члены данных, которые вы указали выше, являются атрибутами класса и, следовательно, требуют указания имени класса. Вы можете использовать self.r = self.__class__.realpart, если хотите. Кажется, что вы просто используете эти значения в качестве инициализаторов, поэтому наличие realpart и imagpart вообще избыточно.

(Также обратите внимание, что Python имеет встроенную поддержку комплексных чисел. Просто напишите их, например, 5 + 3j.)

...