【问题标题】:python class - function variables scopepython类 - 函数变量范围
【发布时间】:2017-09-05 18:47:28
【问题描述】:

我有以下 python 代码:

class Geometry_2D:
    def __init__(self, shape_name):
        self.shape_name = shape_name

class Polygon(Geometry_2D):

    def __init__(self, shape_name, verticies_amount):
        Geometry_2D.__init__(self, shape_name)
        self.verticies_amount

    def Adjust_verticies_amount(self):
        self.verticies_amount += 1

triangle = Polygon('triangle', 3)
quadrilateral = triangle.Adjust_verticies_amount()

这里我有一个变量verticies_amount,它在Polygon__init__ 函数中定义。我需要在Adjust_verticies_amount 函数中使用verticies_amountvariable。但是,这是不可能的,因为它们在不同的范围内。所以,我的quadrilateral = triangle.Adjust_verticies_amount() 电话无法正常工作。

我应该怎么做才正确?

【问题讨论】:

  • 你只是忘记声明self.verticies_amount = verticies_amount
  • 您忘记在您的Polygon __init__ 中分配给self.verticies_amount。将来,说“它不起作用”还不足以说明问题。您的程序将在以下行失败:triangle = Polygon('triangle', 3),这会给您一个AttributeError

标签: python oop scope


【解决方案1】:

你忘记在 Polygon 的 init() 方法中设置 self.vertices_amount

class Geometry_2D:
    def __init__(self, shape_name):
        self.shape_name = shape_name

class Polygon(Geometry_2D):
    def __init__(self, shape_name, verticies_amount):
        Geometry_2D.__init__(self, shape_name)
        self.verticies_amount = vertices_amount

    def Adjust_verticies_amount(self):
        self.verticies_amount += 1

triangle = Polygon('triangle', 3)
quadrilateral = triangle.Adjust_verticies_amount()

【讨论】:

    猜你喜欢
    • 2013-10-12
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多