принять переменную в конструкторе класса и изменения Python - PullRequest
0 голосов
/ 26 апреля 2018

Как получить доступ к значению переменной, которая находится в конструкторе класса?

код

class Rectangle:
    count = 0

    def __init__(self,width, height):
        self.width = width
        self.height = height


        bla = 10
        Rectangle.count += 1

        default_area = 20

    def calcArea(self):
        area = self.width * self.height
        return area

    def getcount(self):
        print(self.count)

Я хочу изменить default_area;как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Если вы хотите, чтобы все экземпляры совместно использовали один и тот же default_area, поднимите его, чтобы он стал атрибутом класса:

class Rectangle:
    count = 0
    default_area = 20

# Modify
Rectangle.default_area = 30

Если вы хотите, чтобы каждый экземпляр имел свой собственный, сделайте его атрибутом класса (какописано в предыдущих публикациях):

def __init__(self,width, height):
    self.width = width
    self.height = height
    self.default_area = 20

# Modify
rect1.default_area = 30

Если вы хотите, чтобы это было истинное значение по умолчанию, сделайте это в конструкторе:

def __init__(self,width, height, area=20):
    self.width = width
    self.height = height
    self.area = area

# Modify
rect1.area = 30
0 голосов
/ 26 апреля 2018

Вы можете связать свою переменную с классом, написав: self.default_area = 20.Тогда вы можете получить к нему доступ self.default_area.Переменные bla, default_area определены в локальной области видимости конструктора класса и являются сборщиком мусора, поскольку у них больше нет ссылок.Когда переменная не имеет ссылки, к ней нельзя получить доступ.Область переменных в CalcArea и результат могут быть возвращены напрямую.

#!/usr/bin/env python

class Rectangle:
    def __init__(self, width, height):
        self.Width = width
        self.Height = height

        self.default_area = self.CalcArea()

    def CalcArea(self):
        return self.Width * self.Height

    def GetInfo(self):
        print("X:", self.Width)
        print("Y:", self.Height)
        print("Area:", self.default_area)

rect1 = Rectangle(10, 20)
rect1.GetInfo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...