如何调用不同类中的方法



对Python3中的OOP感到困惑:

main.py:

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

ma.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'

如何让最低类(mclass2)访问更高类(ma1)中的方法—特别是.logout方法。

谢谢!

试试这个- mclass2不把它的父类看作super类,就像它自己一样。所以你需要的是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对象的实例上赋值一个m1对象。我不认为这是一个好的做法。

最新更新