2017-09-05 61 views
-1

我有以下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_amount变量。但是,这是不可能的,因为它们处于不同的范围。所以,我的quadrilateral = triangle.Adjust_verticies_amount()调用不起作用。

我应该怎么做才能正确?

+1

你只是忘了申报'self.verticies_amount = verticies_amount' – PRMoureu

+1

你忘了分配给'self.verticies_amount'在你的'Polygon'' __init__'中。将来,说“不起作用”不是一个充分的问题规范。你的程序在下面一行会失败:'triangle = Polygon('triangle',3)',它会给你一个'AttributeError' –

回答

1

你忘了把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()