2017-07-27 15 views
0

私はプログラミングに新たなんだと私はあなたが(障害物が作られ、前のクラスである)例えばPythonの2のクラス内で定義されているメソッド/パラメータを呼び出す方法として困惑している、クラス(Python)の__init__メソッドから変数を呼び出す方法は?

class Block(Obstacle): 

    def __init__(self, origin, end, detection=9.): 
     self.type = 'block' 
     self.origin = origin 
     self.end = end 

     x1 = self.origin[0] 
     y1 = self.origin[1] 
     x2 = self.end[0] 
     y2 = self.end[1] 

    def __str__(self): 
     return "block obstacle" 

私は環境を生成するときに、異なるx1、y1、x2、y2の値を定義します(本質的にブロックのコーナーの座標点を示します)。私は何かを計算する際にx1、y1、x2、y2の値が必要な別の後の方法を持っていますが、実際にそれらを新しい関数にどのように呼び出すのか混乱していますか?この新しい機能にはどんなパラメーターを入れますか?あなたがオブジェクト変数としてそれを持つことができます>self.x1 -

+0

self.nameで定義した場合、それらはクラス内の「グローバル」変数になります。あなたはself.x、self.y = self.originを使うことができます –

+1

@AntonvBR:私はそれらをインスタンス変数と呼んでいます。グローバルなものは別のものです... –

+0

@SergeBallestaあなたは絶対に正しいです、私はより良い名前、したがって引用符を見つけることができませんでした。 –

答えて

1
import math 

私はx1になるだろう。

クラスオブジェクト内では、例として計算用にこれらの関数を定義することができます。

def calculate_centre(self): 
    self.centre_x = self.x2 - self.x1 
    self.centre_y = self.y2 - self.y1 

    self.centre = (centre_x, centre_y) 

def distance_between_block_centres(self, other): 
    block_x, block_y = other.centre 

    distance = math.sqrt((self.centre_x - block_x)**2 + (self.centre_y - block_y)**2) 
    return distance 


block = Block(stuff) 
block_2 = Block(other_stuff) 

あなたはyouveは作成されたオブジェクト使用してこれらの関数を呼び出すしたい場合:最後に、あなたが計算を実行することができます

print block.centre 
#>>> (3, 5) 

:変数を呼び出す

block.calculate_centre() 
block_2.calculate_centre() 
distance_between = block.distance_between_block_centres(block_2) 

そして、あなたのオブジェクトにも、外部のあなたがあなたのオブジェクトを作成するたびにそれを呼び出す必要はありません。def __init__()

self.calculate_centre() 
関連する問題