からカントのアクセスインスタンス変数は、ここで答えたが、別のクラスからインスタンス変数にアクセスすることはできません(私は例としてthisを試してみました)別のクラス
#in file: view.py
class treeview():
def __init__(self):
....(no mention of row_num)
def viewer(self, booklist, act=-1):
row_num = len(treeview().full_list)
print(row_num) # prints the correct value, which is > 0
return row_num
#in main file
class Window(Gtk.ApplicationWindow):
def __init__(self, application, giofile=None):
self.TreeView = view.treeview()
def extract_data_from_cr(self, select_button):
print(self.TreeView.row_num)
はエラーを与える:
AttributeError: 'treeview' object has no attribute 'row_num'
私は(ツリービュー内row_num
を追加しようとした場合)のように:
class treeview():
def __init__(self):
self.row_num = 0
def viewer(self, booklist, act=-1):
self.row_num = len(treeview().full_list)
print(self.row_num)
# return row_num
の場合、print(self.TreeView.row_num)
はmain
で常に0
です。
私は何がここで間違っている見つけることができません。親切に助けてください。再びミッチさんのコメント 後
私は(ツリービューを呼び出さずROW_NUMを定義した場合):
今class treeview():
def __init__(self):
self.row_num = 0
def viewer(self, booklist, act=-1):
self.row_num = len(self.bookstore)
print(type(self.bookstore)) # <class 'gi.overrides.Gtk.ListStore'>
print(self.row_num) # 5 (expected for a particular case)
、def extract_data_from_cr
を呼び出すときに、私はこの番号を期待しています:
def extract_data_from_cr(self, select_button):
print(self.TreeView.row_num) #is giving 0
A MCVE
$cat mcve.py
class classA():
def __init__(self):
self.row_num = 0
print("HiA")
def define(self):
la = ["A", "B", "C"]
self.row_num = len(la)
print(self.row_num) #prints 3 when get called from mcve2
return(self.row_num)
classA().define()
と
$cat mcve2.py
#!/usr/bin/python
import mcve
class classB():
def get_val(self):
self.MCVE = mcve.classA()
print("Hi2")
print(self.MCVE.row_num) #prints 0
classB().get_val()
結果:
python3 mcve2.py
HiA
3
HiA
Hi2
0
私が知っています。 ClassA.define()
をClassB.get_val()
から明示的に呼び出すと、希望の値が得られます。しかし、私はそれが持っている価値を転ばそうとしています(Result: line 2
)
私のせいです。 'row_num'行を追加しようとすると2番目の例で' treeview() 'の中に追加しました。これは' main'から呼び出されたときに常に0を返します。例が編集されます。見てください。 – BaRud