我不确定这是否可行但我想迭代一个类并设置一个字段成员属性而不显式引用字段对象:
public class Employee
{
public Person _person = new Person();
public void DynamicallySetPersonProperty()
{
MemberInfo[] members = this.GetType().GetMembers();
foreach (MemberInfo member in members.Where(a => a.Name == "_person"))
//get the _person field
{
Type type = member.GetType();
PropertyInfo prop = type.GetProperty("Name"); //good, this works, now to set a value for it
//this line does not work - the error is "property set method not found"
prop.SetValue(member, "new name", null);
}
}
}
public class Person
{
public string Name { …Run Code Online (Sandbox Code Playgroud) 我从来都不是匈牙利表示法的粉丝,除非你做了一些非常低级的编程,否则我总是觉得它很无用,但在每个C++项目中,我都采用了某种匈牙利符号政策,并且使用一些"非真正匈牙利"的前缀作为m_表示字段,s_表示静态,g_表示全局变量等等.
很快我意识到它在C#中有多么无用,并逐渐开始放弃我所有的旧习惯......但是'm_'的事情.我仍然在私有字段上使用m_前缀,因为我真的觉得能够区分参数,本地和字段非常有用.
MSDN上字段页面的命名约定说我不应该,但它没有说明原因(例如Google的惯例通常倾向于合理化他们的处方).
有没有理由我不应该或只是风格问题.如果是后者,前缀通常被认为是一种不好的风格,我是否可以期待其他人在代码库上做出负面反应?
我有这个型号:
class Visit(models.Model):
timestamp = models.DateTimeField(editable=False)
ip_address = models.IPAddressField(editable=False)
Run Code Online (Sandbox Code Playgroud)
如果用户在一天内多次访问,如何根据ip字段筛选唯一行?(我想今天的独特访问)
today = datetime.datetime.today()
yesterday = datetime.datetime.today() - datetime.timedelta(days=1)
visits = Visit.objects.filter(timestamp__range=(yesterday, today)) #.something?
Run Code Online (Sandbox Code Playgroud)
编辑:
我看到我可以使用:
Visit.objects.filter(timestamp__range=(yesterday, today)).values('ip_address')
Run Code Online (Sandbox Code Playgroud)
获取只有ip字段的ValuesQuerySet.现在我的QuerySet看起来像这样:
[{'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address':
u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}]
Run Code Online (Sandbox Code Playgroud)
如何在不评估QuerySet和获取数据库命中的情况下过滤此唯一性?
# Hope it's something like this...
values.distinct().count()
Run Code Online (Sandbox Code Playgroud) 我想创建一个类,其中客户端可以存储lambda表达式,如类[]() -> void {}的字段,但我无法弄清楚如何这样做. 一个答案建议使用decltype,我尝试没有成功.这是一个ideone源链接.以下是来源和结果:
#include <cstdio>
auto voidLambda = []()->void{};
class MyClass {
public:
decltype(voidLambda) t;
MyClass(decltype(voidLambda) t) {
this->t = t;
}
};
int main() {
MyClass([] {
printf("hi");
});
}
Run Code Online (Sandbox Code Playgroud)
结果:
prog.cpp: In constructor 'MyClass::MyClass(<lambda()>)':
prog.cpp:3:79: error: no matching function for call to '<lambda()>::__lambda0()'
prog.cpp:2:20: note: candidates are: <lambda()>::<lambda>(const<lambda()>&)
prog.cpp:2:20: note: <lambda()>::<lambda>(<lambda()>&&)
prog.cpp:3:88: error: no match for 'operator=' in '((MyClass*)this)->MyClass::t = t'
prog.cpp: In function 'int main()':
prog.cpp:5:27: error: no matching …Run Code Online (Sandbox Code Playgroud) 可以保存一些PDF表单,包括所有填写的字段数据:
可以保存http://i41.tinypic.com/14lj4o2.png
其他一些无法保存,所有填写的字段数据都会丢失:
无法保存http://i44.tinypic.com/2zgc5mh.png
如何在PDF表单上启用保存填写的字段?
我刚刚在Java中发现你可以声明一个字段'静态瞬态' - 编译器不会抱怨.这似乎没有任何用处,因为静态字段没有被序列化,我们都知道.
但我想知道,实际上是否存在"静态瞬态"字段有用的情况?
我想比较两个日期和时间,我想要所有的结果 from tbl where date1 > date2
Select * From temp where mydate > '2009-06-29 04:00:44';
Run Code Online (Sandbox Code Playgroud)
但它只是比较日期而不是时间.它给了我今天日期的所有结果集
'2009-06-29 11:08:57'
'2009-06-29 11:14:35'
'2009-06-29 11:12:38'
'2009-06-29 11:37:48'
'2009-06-29 11:52:17'
'2009-06-29 12:12:50'
'2009-06-29 12:13:38'
'2009-06-29 12:19:24'
'2009-06-29 12:27:25'
'2009-06-29 12:28:49'
'2009-06-29 12:35:54'
'2009-06-29 12:36:54'
'2009-06-29 12:49:57'
'2009-06-29 12:58:04'
'2009-06-29 04:13:20'
'2009-06-29 04:56:19'
'2009-06-29 05:00:23'
'2009-06-29 05:04:26'
'2009-06-29 05:08:17'
'2009-06-29 05:26:57'
'2009-06-29 05:29:06'
'2009-06-29 05:32:11'
'2009-06-29 05:52:07'
Run Code Online (Sandbox Code Playgroud)
提前致谢!
class LoginForm(forms.Form):
nickname = forms.CharField(max_length=100)
username = forms.CharField(max_length=100)
password = forms.CharField(widget=forms.PasswordInput)
class LoginFormWithoutNickname(LoginForm):
# i don't want the field nickname here
nickname = None #??
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
注意:我没有ModelForm,所以Meta上课exclude不起作用.
我正在写一些调用的代码Field.set和Field.get数千次.显然,由于反射,这是非常缓慢的.
我想看看我是否可以MethodHandle在Java7中提高性能.到目前为止,这就是我所拥有的:
而不是field.set(pojo, value),我正在做:
private static final Map<Field, MethodHandle> setHandles = new HashMap<>();
MethodHandle mh = setHandles.get(field);
if (mh == null) {
mh = lookup.unreflectSetter(field);
setHandles.put(field, mh);
}
mh.invoke(pojo, value);
Run Code Online (Sandbox Code Playgroud)
但是,这似乎没有比使用反射的Field.set调用更好.我在这里做错了吗?
我读到使用invokeExact可能会更快,但当我尝试使用它时,我得到了一个java.lang.invoke.WrongMethodTypeException
有没有人成功地优化了对Field.set或Field.get的重复调用?
根据此文档,我只能在具有相同名称的字段之间进行连接.
您知道是否可以在具有不同名称的字段上加入两个DataFrame?
SQL中的等价物是:
SELECT *
FROM df1
LEFT OUTER JOIN df2
ON df1.id_key = df2.fk_key
Run Code Online (Sandbox Code Playgroud)