在类的构造函数中获取变量并修改python

时间:2018-04-25 23:09:35

标签: python class oop constructor

如何访问类构造函数中的变量值?

代码是

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 :(得分:0)

您可以通过以下方式将您的变量与类相关联: self.default_area = 20。然后,您可以self.default_area访问它。变量bladefault_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()

答案 1 :(得分:0)

如果您希望所有实例共享相同的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