为了设置类的元类,我们使用该__metaclass__
属性.在定义类时使用元类,因此在类定义无效后显式设置元类.
当我尝试显式设置元类时会发生这种情况;
>>> class MetaClass(type):
def __new__(cls, name, bases, dct):
dct["test_var"]=True
return type.__new__(cls, name, bases, dct)
def __init__(cls, name, bases, dct):
super(MetaClass, cls).__init__(name, bases, dct)
>>> class A:
__metaclass__=MetaClass
>>> A.test_var
True
>>> class B:
pass
>>> B.__metaclass__=MetaClass
>>> B.test_var
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
B.test_var
AttributeError: class B has no attribute 'test_var'
Run Code Online (Sandbox Code Playgroud)
我能想到的最好的想法是重新定义整个类并__metaclass__
以某种方式动态添加属性.或者你知道在类定义之后设置元类的更好方法吗?
我正在尝试使用Doctrine 2进行本机查询..但我不能让它工作..
$q = "SELECT * FROM user_recent_activity WHERE id = {$user->id}";
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$query = $this->_em->createNativeQuery($q, $rsm);
$result = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
这是返回空数组..我不确定它是如何工作的"ResultSetMapping",但我不能用这个查询映射,就像我在doctrine网站的例子中看到的那样,因为user_recent_activity它不是一个表,它是一个像这个:
id user_id type created_at
12 5 opinion 2011-02-22 23:29:00
2 2 vote 2011-01-30 14:16:51
Run Code Online (Sandbox Code Playgroud)
id代表不同的对象,所以,不是外键..
那么,是否可以对Doctrine 2进行正常查询?..我变得疯了..
谢谢
这是我想要实现的一个简化示例,我对Rails相对较新,并且正在努力解决模型之间的关系问题.
我有两个模型,User
模型和Category
模型.用户可以与许多类别相关联.对于许多用户,特定类别可以出现在类别列表中.如果删除了特定类别,则应将其反映在用户的类别列表中.
在这个例子中:
我的Categories
表包含五个类别:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ID | Name | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 1 | Sports | | 2 | News | | 3 | Entertainment | | 4 | Technology | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我的Users
表包含两个用户:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ID | Name | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 1 | UserA | | 2 | UserB | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UserA可以选择体育和科技作为他的类别
UserB可以选择新闻,体育和娱乐
删除了体育类别,UserA和UserB类别列表都反映了删除
我玩弄了一个创建一个UserCategories
表,其中包含类别和用户的ID.这样的工作,我可以查找类别名称,但我无法得到级联删除工作,整个解决方案似乎错了.
使用我发现的belongs_to和has_many函数的例子似乎讨论了映射一对一的关系.例如,对博客文章的评论.
如何将返回的值转换 System.getProperty("line.separator");
为其字符串表示形式.
例如,如果值是"\n"
我想要由字符组成的字符串: ['\' + 'n']
,如果值为"\r\n"
=> ['\','r','\','n']
是否有意义?
我想到了一些非常微不足道的想法,我想知道不同的想法.
编辑
Doh !! ..经过一番思考(确实很少)我想出了明显的事情:
String lineSeparatorRepresentation
= System.getProperty("line.separator").equals("\n")?"\\n":"\\r\\n";
Run Code Online (Sandbox Code Playgroud) 我有一个LINQ语句,我正在加入ID字段.问题是有时"等于"左侧的ID可能为空.
有办法处理这个吗?
我有一个由团队成员在另一台计算机上创建的ASP.Net项目。该项目引用了我的计算机上存在的虚拟目录,但位于其他localhost位置。
当前,当我尝试打开项目时发生以下错误:
http://localhost/foo/default.aspx
为Web项目foobar指定的本地IIS URL 尚未配置。为了打开该项目,需要配置虚拟目录。您现在要创建虚拟目录吗?
[是] [否]
因此,有两种选择:
在http://localhost/foo/default.aspx
项目中指定的虚拟目录位置(在我的情况下)在哪里?我可以在打开项目之前或之后手动更改它,例如在项目中的配置文件中吗?与手动打开IIS以覆盖虚拟目录路径相比,配置更改似乎更理想。
编辑(解决方案):在下面的评论中隐藏的是以下答案(感谢@Thyamine)
可以在项目的foo.csproj文件中进行配置。
查找行:
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{F00-000-000}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<!-- ... -->
<IISUrl>http://localhost/Foo/default.aspx</IISUrl> <!-- EDIT THIS LINE -->
<!-- ... -->
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
Run Code Online (Sandbox Code Playgroud) 我如何在jQuery中处理ap/div标签的字符计数器?
基本上我想在字符值> = 50时显示不同的css值.
一直苦苦挣扎几个小时:)
我想为我在HTML5中构建的设计创建一组内容选项卡.我想知道我是否应该使用一组<article>
或<section>
标签来包含内容?
C++中的这一件事让我感到不舒服很长一段时间,因为我老实说不知道该怎么做,尽管听起来很简单:
目标:允许客户端使用工厂方法而不是对象的构造函数来实例化某个对象,而不会产生不可接受的后果和性能损失.
"工厂方法模式"是指对象内部的静态工厂方法或另一个类中定义的方法,或全局函数.通常只是"将类X的实例化的正常方式重定向到构造函数之外的任何其他位置的概念".
让我略过一些我想到过的可能答案.
这听起来不错(实际上通常是最好的解决方案),但不是一般的补救措施.首先,有些情况下,对象构造是一个复杂的任务,足以证明它被提取到另一个类.但即使将这个事实放在一边,即使对于仅使用构造函数的简单对象,通常也不会这样做.
我所知道的最简单的例子是2-D Vector类.这么简单,但很棘手.我希望能够从笛卡尔坐标和极坐标两者构造它.显然,我做不到:
struct Vec2 {
Vec2(float x, float y);
Vec2(float angle, float magnitude); // not a valid overload!
// ...
};
Run Code Online (Sandbox Code Playgroud)
我的自然思维方式是:
struct Vec2 {
static Vec2 fromLinear(float x, float y);
static Vec2 fromPolar(float angle, float magnitude);
// ...
};
Run Code Online (Sandbox Code Playgroud)
其中,而不是构造函数,导致我使用静态工厂方法...这实际上意味着我正在以某种方式实现工厂模式("类成为自己的工厂").这看起来不错(并且适合这种特殊情况),但在某些情况下失败,我将在第2点中描述.继续阅读.
另一种情况:试图通过某些API的两个opaque typedef(例如不相关域的GUID,或GUID和位域)重载,类型在语义上完全不同(所以 - 理论上 - 有效的重载)但实际上它们实际上是同样的事情 - 像无符号的int或void指针.
Java很简单,因为我们只有动态分配的对象.制造工厂同样简单:
class FooFactory {
public Foo createFooInSomeWay() {
// can be a static method as well,
// if we don't need the factory …
Run Code Online (Sandbox Code Playgroud) 在表格上我有两个单选按钮是和否.我想更改单选按钮的默认外观
喜欢这个.
编辑:我想在启用JavaScript时将radio
按钮更改为<a>
锚点,如果通过css更改默认无线电的外观并不容易.