如果没有子类化dict,那么类需要被视为一个映射,以便它可以传递给**的方法
from abc import ABCMeta
class uobj:
__metaclass__ = ABCMeta
uobj.register(dict)
def f(**k): return k
o = uobj()
f(**o)
# outputs: f() argument after ** must be a mapping, not uobj
Run Code Online (Sandbox Code Playgroud)
至少到它抛出缺少映射功能的错误,所以我可以开始实现.
我查看了模拟容器类型,但只是定义魔术方法没有效果,并且使用ABCMeta覆盖并将其注册为dict将断言验证为子类,但是失败是isinstance(o,dict).理想情况下,我甚至不想使用ABCMeta.
我的build.gradle文件中有一个自定义任务,它在获取dex'd之前对类文件进行字节码转换,如下所示:
task droidcook(type: JavaExec) {
main 'org.tsg.android.asm.Main'
}
afterEvaluate { project ->
android.applicationVariants.each { variant ->
variant.javaCompile.doLast {
project.tasks.droidcook.configure {
classpath variant.javaCompile.classpath
classpath "build/classes/" + variant.dirName
classpath sdk.dir + "/platforms/android-19/android.jar"
classpath "compile-libs/droidcook.jar"
args "build/classes/" + variant.dirName
args "com.example"
// args "-debug"
// args "-asmifier"
}
project.tasks.droidcook.execute()
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述问题是没有适当评估的classpath sdk.dir + ...行sdk.dir.为了使这个工作,我目前必须硬编码的路径android.jar.
如果您可以使用适当的值进行应答以替换android-19为android.jar基于项目配置访问特定平台,则可获得奖励积分.:d
我在应用程序在后台销毁应用程序后出现问题.虽然我有一些修复,但我希望能够立即测试它们.
如果我对应用程序进行后台处理并从应用程序的系统设置中"强行停止",那么当我恢复应用程序时,这似乎不会重现问题.
现在,我必须对应用程序进行后台处理并等待将近12个小时才再次尝试.
如何告诉android销毁应用程序,以便我可以测试我的修复程序而无需等待.
我很好奇是否可以在类或方法上使用注释,在运行期间或之前,使用注释字符串的日志记录替换注释.例如,如果在android上:
@LogComments
class MyActivity extends Activity {
@Override public void onCreate(Bundle b) {
super.onCreate(b);
// set some local vars
int a = 1;
int b = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
会翻译成类似的东西
class MyActivity extends Activity {
@Override public void onCreate(Bundle b) {
super.onCreate(b);
Log.d("TAG", "set some local vars");
int a = 1;
int b = 2;
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个具有父级和子级的 Element 结构,创建了一个名为 SubElement 的辅助函数,以及一个遍历所有子级以进行打印的 String 方法:
package main
import "fmt"
type Element struct {
parent *Element
children []Element
tag string
}
func SubElement(parent *Element, tag string) Element {
el := Element{}
el.parent = parent
el.tag = tag
parent.children = append(parent.children, el)
return el
}
func (el Element) String() string {
s := "<" + el.tag + ">"
for _, child := range el.children {
s += child.String()
}
s += "</" + el.tag + ">"
return s
}
func …Run Code Online (Sandbox Code Playgroud)