簡體   English   中英

如何調用不同的方法 class

[英]How to call methods in a different class

在 Python3 中對 OOP 感到困惑:

主要文件:

import ma as m1

r = m1.ma1() 
r.doit()
print(r.m1avar)
print(r.m2var)
r.m2do()

地圖.py:

import mb as m2

class ma1(m2.mclass2):
    
    m1avar = 10
    
    def doit(self):
        self.logout("doit!")
        
    def logout(self, a):
        print(a+" <--- this is correct")

mb.py:

class mclass2():
    
    m2var = 5;
    m1avar = 5;
    
    def doit(self):
        super().logout("m2 do it")
    
    def m2do(self):
        super().logout("child class")
    

產生:

doit! <--- this is correct
10
5
Traceback (most recent call last):
  File "/home/alex/Desktop/rrr/m1.py", line 8, in <module>
    r.m2do()
  File "/home/alex/Desktop/rrr/mb.py", line 11, in m2do
    super().logout("child class")
AttributeError: 'super' object has no attribute 'logout'

我如何獲得最低的 class (mclass2) 以訪問更高的 class ma1 中的方法 - 特別是.logout方法。

謝謝!

試試這個 - mclass2 不認為它的父 class 是超級的,就像它自己一樣。 所以是self. 你不需要super.

class mclass2():
    
    m2var = 5;
    m1avar = 5;
    
    def doit(self):
        super().logout("m2 do it")
    
    def m2do(self):
        self.logout("child class")

問題是 m2 沒有繼承自 m1。 換句話說,m2 甚至不知道 m1 的存在。

您唯一可以做的就是在 m2 object 的實例上分配一個 m1 object。我認為這不是一個好的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM