2017-08-14 10 views
0

次のコードが表示された場合、クラスBのクラスAのオブジェクトをファイル3のインスタンス属性に代入して作成していますこのクラスAインスタンスをクラスCのメソッドへの引数として渡しています。私のクエリでは、属性を使用してクラスのインスタンスを作成できますか?もしそうなら、どのようなPythonの概念を私はそのようなコードを理解するために読む必要がありますか?そのような場合にどのようにPythonの流れが起こるか。誰もがより良い..TIAをこの概念を理解するためのサンプルコードを提供することができた場合、それは素晴らしいことだPythonでは、クラスBのインスタンス属性をクラスAのインスタンスオブジェクトとして使用できます

ファイル1

class A: 
    def __init__(self, arg1, arg2): pass 

ファイル2

import file1 
class B: 
    def method1(self): 
    self.attr = **file1.A**(arg1, arg2) 

ファイル3

import file2 
import file4 
class C: 
    def method2(self): 
    file4.method_in_file4(self.attr) 
+1

(Jonas for the formatting)このコードは実際にはPythonコードではほとんどないようです。私はあなたが少しPythonについて学ぶ必要があると思うし、コンパイルして実行するコードでこの質問を更新することができます。 – quamrana

+0

続ける。あなたはほとんどそこにいる – quamrana

+0

こんにちはquamrana、提案のおかげで、その巨大な&複数のファイル数が関与しているとして準拠コードを投稿するのは難しいです。私はoopsの概念を学びましたが、インスタンス属性がクラスのオブジェクトとして動作しているPythonコードを見つけることはできませんでした。どのPythonのコンセプトがこれをより良く理解するのに役立つかを理解したいと思います。 – simha

答えて

0

次の操作はできません。

class C(): 
    def method2(self.attr): 

クラスCのインスタンスを作成してから、Aの必須インスタンスを引数としてmethod2()に渡す必要があります。以下に例を示します(簡略化のため、1つのファイル内のすべてのコード)。

class A(): 
    def __init__(self, arg1, arg2): 
     pass 

class B(): 
    def method1(self, arg1, arg2): 
    self.attr = A(arg1, arg2) 

class C(): 
    def method2(self, attr):  # note comma, not dot. 
     print(type(attr)) 

>>> b = B() 
>>> b.method1(1, 2) # must call this otherwise `b.attr` is not created 
>>> c = C() 
>>> c.method2(b.attr) 
<class '__main__.A'> 
+0

ありがとうmhawke、私はクラスCコードplzのチェックを編集した、私の正確な疑いは、私はクラスBのself.attrインスタンスによって参照されるクラスAを持っている(インスタンス属性クラスのインスタンスとして動作できますか? a = A()rightという構文でインスタンスを作成します。このself.attrオブジェクトは、class()のメソッドの引数として渡されます。私が理解しようとしているコードが私が投稿したように呼び出されているので、このフォーマットを変更することはできません – simha

1

これはあまりPythonに関連していません。これは、オブジェクト指向プログラミングに関連しています。別のクラスのクラスのオブジェクトを使用するときは、という構成のと呼ばれます。そのため、これについて読む必要があります。多分thisの記事があなたを助けるでしょう。私はあなたが意味だと思う何

0

はこれです:

file1.py

class A(): 
    def __init__(self, arg1, arg2): 
     pass 

file2.py

import file1 
class B(): 
    def method1(self,arg1, arg2): 
     self.attr = file1.A(arg1, arg2) 

file3.py

class C(): 
    def method2(self, attr): 
     pass 

使用法は、このようなものです:

import file2 
import file3 

b = file2.B() 
b.method1(1, 2) # creates an instance of A 

c = file3.C() 

c.method2(b.attr) # pass the instance of A from B to C 
関連する問題