- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 python 类,它继承了多个类,并且有同名的 test_func()
parent.py
class parent:
def __init__(self, **kwargs):
self.ip = kwargs.get('ip')
self.name = kwargs.get('name')
self.local = kwargs.get('local')
class child1(parent):
def __init__(self,**kwargs):
parent.__init__(self,**kwargs)
def test_func(self):
print 'When local =true'
return self.name
class child2(parent):
def __init__(self,**kwargs):
parent.__init__(self,**kwargs)
def test_func(self):
print ("When local =False")
return self.ip
class child3(parent,child1,child2):
def __init__(self, **kwargs):
parent.__init__(self, **kwargs)
有一个环境文件,我在其中初始化类
from parent import parent
from child2 import child2
from child1 import child1
from parent import child3
server=child3(
ip = '10.20.11.10',
name ='pankaj',
local = False
)
我有一个 robotfile (Test.robot) 调用方法 test_func
*** Settings ***
Library parent.child3 WITH NAME wireshark_test
*** Variables ***
*** Test Cases ***
This is first
Invoking methods
*** Keywords ***
Invoking methods
log to console wireshark_test.test_func
我正在通过命令执行这个
pybot -V envSI.py Test.robot
我总是得到 child1 类的 test_func
期望:
当 local=True child1 类的 test_func别的child2 类
的 test_func谁能指导我该怎么做?
最佳答案
I am always getting test_func of child1 class
之所以如此,是因为 Method Resolution Order在 python 中的多重继承中;另一个阅读是 https://www.python.org/download/releases/2.3/mro/ (不要介意网址中的旧版本)。
简而言之,当存在多重继承时——就像在您的示例中,class child3(parent,child1,child2)
,当存在对属性的访问时,python 将从左侧查找父类向右,直到找到匹配项(如果没有匹配项,则引发异常)。
当您调用 test_func()
时,解析从“parent”开始——未找到,然后转到“child1”——因为它有这个方法,所以它被挑选并执行。因此,对于从“child3”创建的对象,它始终是“child1”中的实现。
你能改变 MRO 吗?几乎没有(而且,如果您不是 101% 确定自己在做什么,您真的不想这样做)。您可以更改类的继承模式;或者你可以有不同的类对象——“child1”和“child2”,并根据你的情况调用相应的对象。
关于python - 从机器人框架中的不同类调用同名的python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53278381/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!