有没有办法在Python中确定对象是否具有某些属性?例如:
>>> a = SomeClass()
>>> a.someProperty = value
>>> a.property
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'
Run Code Online (Sandbox Code Playgroud)
在使用之前如何判断是否a
具有该属性property
?
我想在我的代码的任何函数中看到堆栈跟踪,所以我做了这样的事情来调用它并打印堆栈跟踪:
public function PrintStackTrace() {
try {
throw new Error('StackTrace');
} catch (e:Error) {
trace(e.getStackTrace());
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有其他方法可以做到这一点.在某些地方,Error类创建堆栈跟踪,但也许它没有使用ActionScript 3.0,所以也许它不可行,但我想知道.
谢谢!
我怎样才能很好地在AS3中创建一个抽象类?
我试过这个:
public class AnAbstractClass
{
public function toBeImplemented():void
{
throw new NotImplementedError(); // I've created this error
}
}
public class AnConcreteClass extends AnAbstractClass
{
override public function toBeImplemented():void
{
// implementation...
}
}
Run Code Online (Sandbox Code Playgroud)
但是......我不喜欢这样.并且没有编译时错误.
首先,我正在阅读一些论坛和MSDN中的帮助,并且所有人都说代理人不能超载.
现在,我希望有这样的东西:
public delegate void OneDelegate();
public delegate void OneDelegate(params object[] a);
public void DoNothing(params object[] a) {}
public void DoSomething() { /* do something */ }
private OneDelegate someFunction;
someFunction = new OneDelegate(DoSomething);
someFunction = new OneDelegate(DoNothing);
Run Code Online (Sandbox Code Playgroud)
所以,就像你知道的那样,你不能这样做,因为OneDelegate只引用第一个而不是第二个.但是,有没有办法做到这一点?或类似的东西?
PS1:我希望拥有任意数量的OneDelegate声明,而不仅仅是一两个声明.
我正在开发一个必须响应来自几个客户端的请求的PHP应用程序,我认为"任何客户都可以看到我正在编写的PHP代码吗?".
我想知道在C#中是否存在类似于AS3的Function类型.我想做这样的somnthing(但在C#中):
private function doSomething():void {
// statements
}
var f:Function = doSomething
f()
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Vim中使用搜索命令:
:Rs/F/T/X
R = range
F = text to find
T = text to replace with
X = options
Run Code Online (Sandbox Code Playgroud)
但是,当我想搜索"."时.(点字符)我遇到了一些问题.
任务:替换所有出现的"." (空格点)为">"(大于)
所以,首先我尝试了这个:
:%s/ ./>/g
Run Code Online (Sandbox Code Playgroud)
但这改变了我所有的"." (空格ANY-CHARACTER)到">"字符.
然后我记得点字符是一个特殊字符,所以我尝试了这个:
:%s/ \./>/g
Run Code Online (Sandbox Code Playgroud)
但是vim 却给我一个错误:E486找不到模式"\".
最后我尝试了这个疯狂的事情:
:%s/" ."/>/g
还有这个 :%s/" \."/>/g
但我得到了相同的结果:E486无法找到模式......
PS:抱歉我的英语不好.
将SWF加载到另一个SWF时,加载器SWF可以使用加载的SWF获取特定定义ApplicationDomain.getDefinition(name:String)
.例如:
package
{
// ... imports
public class SWFLoader extends Sprite
{
private var loadedAppDomain:ApplicationDomain;
public function SWFLoader()
{
var request:URLRequest = new URLRequest("test.swf");
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onTestLoadComplete);
loader.load(request);
}
private function onTestLoadComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
loadedAppDomain = loaderInfo.applicationDomain;
// Here we can get ANY defined symbol (class, namespace or function according to Adobe Flash help)
var someSymbolClass:Class = Class(loadedAppDomain.getDefinition("SomeSymbol"));
var someSymbolSprite:Sprite = Sprite(new someSymbolClass());
addChild(sprite);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在SWF中获取所有定义,而无需明确指定每个定义?
c# ×2
flash ×2
python ×2
attributes ×1
batch-file ×1
delegates ×1
file ×1
function ×1
list ×1
oop ×1
overloading ×1
php ×1
replace ×1
security ×1
stack-trace ×1
tuples ×1
types ×1
vim ×1