2017-08-14 73 views
0

如果看到下面的代碼,我將通過將其分配給實例屬性在文件3中爲類B中的類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的格式化)這個代碼實際上是python代碼似乎很少。我想你需要學習更多關於python的知識,然後你可以用編譯和運行的代碼來更新這個問題。 – quamrana

+0

繼續前進。你幾乎在那裏, – quamrana

+0

您好quamrana,感謝您的建議,它的龐大和多個文件涉及其難以發佈編碼。我已經學會了oops概念,並沒有遇到任何實例屬性充當對象類的python代碼。我想了解哪個python概念將幫助我更好地理解這個 – simha

回答

0

您不能執行以下操作:

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

您將需要創建類C的實例,然後致電method2()將類所需的實例作爲參數傳遞給它。這裏有一個例子(在一個文件中的所有代碼爲簡單起見):

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檢查,我的確切疑問是我有一個類A,它是由類B中的self.attr實例引用的(可以將一個實例屬性作爲實例作爲類嗎?通常我們會使用語法a = A())創建實例,並將此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 
相關問題