2016-12-16 11 views
0

私はpygameので初めてarroundの再生しようこんにちは、私はそうのようにクラス全体で関数を呼び出すことができる方法があるかどうかを知りたいのです:Pythonのコール機能

class Char(): 
def __init__(self,typ,sid): 
    self.type=typ 
    self.x=0 
    self.y=0 
    self.vx=0 
    self.vy=0 
    self.frame=0 
    self.sid=sid 
    self.bord = sheets[sid].get_rect() 
    self.rct = pygame.Rect((0,0),(self.bord.bottom,self.bord.bottom)) 

player = Char("player",0) 
test = Char("test",1) 

myfunct(#All Chars()) 

これはあなたがそうのように、クラス変数でリストにそれらすべてを追加することができ、)私はすべてそれぞれのChar(に適用したいのですが、いくつかの簡単な物理学の実装を計画する方法の完全なコードhere

+0

クラスのすべてのインスタンスのリストを自動的に作成するものはありません。すべての 'Char'sのリストを保持したいなら、あなたのスクリプトでそれを行います。 – Barmar

答えて

0

です:

class Char(): 
    all = [] 
    def __init__(self,typ,sid): 
     self.type=typ 
     self.x=0 
     self.y=0 
     self.vx=0 
     self.vy=0 
     self.frame=0 
     self.sid=sid 
     self.bord = sheets[sid].get_rect() 
     self.rct = pygame.Rect((0,0),(self.bord.bottom,self.bord.bottom)) 

     self.all.append(self) 

player = Char("player",0) 
test = Char("test",1) 

myfunct(Char.all) 

それぞれのオブジェクトに個別に関数を適用する場合は、map(myfunct, Char.all)を使うことができますが、おそらくそれは分かっていたはずです。

+0

私はちょっとプログラミングに新しいんじゃない、実際にはちょうど[This](https://en.wikipedia.org/wiki/Class_variable)を読んだけど、本当にまだクラス変数が何か分からないどのようにアクセスできるか、それはリストか、js.prototypeのような他のすべてにリンクされている "元の"インスタンスです。 –

+0

@poolmathoクラス変数はクラス本体に定義されています。クラス名、すなわち 'ClassName.class_variable'でドット表記法を使用してアクセスされます。実際の関数の中では、 'self.class_variable'で参照することができます。あなたはクラス変数と同じものと呼ばれるインスタンス変数を作成しないようにしてください:) –

+0

大丈夫です。助けて、コードはうまく動くようですが、どうもありがとう –