我知道我可以通过执行以下操作动态地向对象添加实例方法:
import types
def my_method(self):
# logic of method
# ...
# instance is some instance of some class
instance.my_method = types.MethodType(my_method, instance)
Run Code Online (Sandbox Code Playgroud)
后来我可以打电话instance.my_method(),自我将被正确绑定,一切正常.
现在,我的问题:如何做同样的事情来获得用@property装饰新方法的行为?
我猜是这样的:
instance.my_method = types.MethodType(my_method, instance)
instance.my_method = property(instance.my_method)
Run Code Online (Sandbox Code Playgroud)
但是,这样做会instance.my_method返回一个属性对象.
我有一个纬度、经度和一个以真北度数表示的行进方向。我想计算我是否会与另外两个纬度/经度点定义的线相交。
我认为定义这条线的两个点将创建我的大圆,而我的位置和方位角将定义我的 Rhumb 线。
我只对几百公里内会发生的交叉路口感兴趣,所以我不需要所有可能的解决方案。
我不知道从哪里开始。
我正处于iPhone应用程序的早期阶段,我有一个问题.我做了一些搜索,但没有找到我想要的东西.
我想利用iPhone OS4中的功能,但我希望我的应用程序也可以在3.X上运行.
看起来我想针对4.0 SDK开发并执行以下操作:
respondsToSelector:作出这一呼吁之前,在现有的框架或一个新的框架,任何新的方法,任何方法我接近了吗?什么推荐?
指向类似问题的指针表示欢迎.
更新:
正如注释 - 如果您正在尝试检查新框架,您最好的机会是respondsToSelector:针对类对象调用类方法而不是使用实例方法.
正如标题所示,我想将可变数据类型传递给模板类.像这样的东西:
frmExample = New LookupForm(Of Models.MyClass) 'Works fine
Dim SelectedType As Type = InstanceOfMyClass.GetType() 'Works fine
frmExample = New LookupForm(Of SelectedType) 'Ba-bow!
frmExample = New LookupForm(Of InstanceOfMyClass.GetType()) 'Ba-bow!
Run Code Online (Sandbox Code Playgroud)
LookupForm<Models.MyClass> frmExample;
Type SelectedType = InstanceOfMyClass.GetType();
frmExample = new LookupForm<SelectedType.GetType()>(); //Ba-bow
frmExample = new LookupForm<(Type)SelectedType>(); //Ba-bow
Run Code Online (Sandbox Code Playgroud)
我假设它与在编译时处理的模板有关,但即使我在那里没有标记,它也无法解决我的问题.我找不到有关使用Reflection实例模板类的任何相关信息.
(如何)我可以在运行时创建动态类型存储库的实例吗?
我试图清楚地知道何时应该使用带有gl [Multi] DrawElements等绘制的OpenGL顶点的索引数组,而不是我应该简单地使用连续的顶点数组,用gl [Multi] DrawArrays绘制.
(更新:我得到的回复中的共识是,应该始终使用索引顶点.)
我已经多次在这个问题上来回走动了,所以我将概述我目前的理解,希望有人可以告诉我,我现在终于或多或少正确,或者指出我遗留的误解在哪里.具体来说,我有三个结论,粗体.如果错误请纠正.
一个简单的例子是如果我的几何体由网格组成以形成曲面.在这种情况下,网格中间的顶点对于使用顶点的每个三角形将具有相同的属性(位置,法线,颜色,纹理坐标等).
这使我得出结论:
对于接缝很少的几何体,索引数组是一个巨大的胜利.
始终遵循规则1,除了:
对于非常"块状"的几何体,其中每个边都代表一个接缝,索引数组的好处不那么明显.以一个简单的立方体为例,虽然每个顶点用于三个不同的面,但我们不能在它们之间共享顶点,因为对于单个顶点,表面法线(以及可能的其他东西,如颜色和纹理合作) )每张脸都会有所不同.因此,我们需要在我们的数组中明确引入冗余顶点位置,以便可以使用不同的法线等多次使用相同的位置.这意味着索引数组的使用较少.
例如,渲染立方体的单个面时:
0 1
o---o
|\ |
| \ |
| \|
o---o
3 2
Run Code Online (Sandbox Code Playgroud)
(这可以单独考虑,因为这个面和所有相邻面之间的接缝意味着这些顶点之间不能共享这些顶点)
如果使用GL_TRIANGLE_FAN(或_STRIP)进行渲染,则可以渲染立方体的每个面:
verts = [v0, v1, v2, v3]
colors = [c0, c0, c0, c0]
normal = [n0, n0, n0, n0]
Run Code Online (Sandbox Code Playgroud)
添加索引不允许我们简化此操作.
由此我得出结论:
2.当渲染所有接缝或大多数接缝的几何体时,当使用GL_TRIANGLE_STRIP或_FAN时,我应该永远不要使用索引数组,而应该总是使用gl [Multi] DrawArrays.
(更新:回复表明这个结论是错误的.即使索引不允许我们在这里减小数组的大小,仍然应该使用它们,因为其他性能优势,如评论中所讨论的)
规则2的唯一例外是:
当使用GL_TRIANGLES(而不是条带或扇形)时,一半的顶点仍然可以重复使用两次,具有相同的法线和颜色等,因为每个立方体面都呈现为两个独立的三角形.同样,对于相同的单个立方体面:
0 1
o---o
|\ |
| \ |
| \|
o---o
3 2
Run Code Online (Sandbox Code Playgroud)
没有索引,使用GL_TRIANGLES,数组将是这样的:
verts = [v0, v1, v2, v2, v3, …Run Code Online (Sandbox Code Playgroud) 服务提供者接口(SPI)和应用程序编程接口(API)之间有什么区别?
更具体地说,对于Java库,是什么使它们成为API和/或SPI?
我并不擅长创建GUI,一般来说我的理念是:我不创建它们,或者我让它们尽可能简单(并说服自己,它更适合可用性:)
对于我目前的项目,我正在使用Python中的Qt(PyQt),我想开始添加一些GUI元素而不会使界面混乱.
我的想法是将这些元素创建为一种只在必要时出现的浮动形状的小部件; 非常像chrome中的状态栏(和查找栏).
是否有任何标准API可以创建这种接口?
我最初有一个界面如下.
public interface testMe {
public Set<String> doSomething();
}
public class A implements testMe {
public Set<String> doSomething() {
return // Set<String>
}
}
Run Code Online (Sandbox Code Playgroud)
我有类似的类实现testMe.现在我必须再添加一个返回的类Set<Some Object>
public class X implements testMe() {
public Set<Some OBject> doSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不破坏现有类的情况下在界面中添加此方法?
我正在尝试编写一个函数来发布表单数据并将返回的cookie信息保存在文件中,以便下次访问页面时,cookie信息将被发送到服务器(即正常的浏览器行为).
我使用curlib在C++中相对容易地编写了这个,但是花了将近一整天的时间尝试使用urllib2在Python中编写它 - 但仍然没有成功.
这是我到目前为止:
import urllib, urllib2
import logging
# the path and filename to save your cookies in
COOKIEFILE = 'cookies.lwp'
cj = None
ClientCookie = None
cookielib = None
logger = logging.getLogger(__name__)
# Let's see if cookielib is available
try:
import cookielib
except ImportError:
logger.debug('importing cookielib failed. Trying ClientCookie')
try:
import ClientCookie
except ImportError:
logger.debug('ClientCookie isn\'t available either')
urlopen = urllib2.urlopen
Request = urllib2.Request
else:
logger.debug('imported ClientCookie succesfully')
urlopen = ClientCookie.urlopen
Request = ClientCookie.Request
cj = ClientCookie.LWPCookieJar() …Run Code Online (Sandbox Code Playgroud) java ×2
python ×2
api ×1
arrays ×1
batch-file ×1
c# ×1
cookies ×1
generics ×1
geometry ×1
great-circle ×1
hci ×1
indexed ×1
intersection ×1
iphone ×1
opengl ×1
qt ×1
reflection ×1
urllib2 ×1
vb.net ×1
vertex ×1