问题列表 - 第47508页

有没有办法在类定义后设置元类?

为了设置类的元类,我们使用该__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__以某种方式动态添加属性.或者你知道在类定义之后设置元类的更好方法吗?

python metaclass

13
推荐指数
2
解决办法
1万
查看次数

原则2,原生查询

我正在尝试使用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进行正常查询?..我变得疯了..

谢谢

native doctrine-orm

8
推荐指数
1
解决办法
2万
查看次数

在Rails中创建多对多关系

这是我想要实现的一个简化示例,我对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函数的例子似乎讨论了映射一对一的关系.例如,对博客文章的评论.

  • 你如何使用内置的Rails功能来表示这种多对多的关系?
  • 在使用Rails时,在两者之间使用单独的表是可行的解决方案吗?

ruby-on-rails

65
推荐指数
3
解决办法
6万
查看次数

琐碎的转换

如何将返回的值转换 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)

java

1
推荐指数
1
解决办法
112
查看次数

LINQ Join语句可能带有NULL id?

我有一个LINQ语句,我正在加入ID字段.问题是有时"等于"左侧的ID可能为空.
有办法处理这个吗?

linq null

3
推荐指数
1
解决办法
5483
查看次数

如何为VS2008打开但在另一台计算机上创建的ASP.Net项目手动覆盖IIS目录?

我有一个由团队成员在另一台计算机上创建的ASP.Net项目。该项目引用了我的计算机上存在的虚拟目录,但位于其他localhost位置。

当前,当我尝试打开项目时发生以下错误:

http://localhost/foo/default.aspx为Web项目foobar指定的本地IIS URL 尚未配置。为了打开该项目,需要配置虚拟目录。您现在要创建虚拟目录吗?
[是] [否]

因此,有两种选择:

  1. 选择“是”:它创建它认为自己不需要的虚拟目录。我在其他地方已经有一个虚拟目录。
  2. 选择否:在项目打开时,这不是选项,但是没有我所知道和喜欢的所有花招。

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)

asp.net visual-studio-2008

5
推荐指数
1
解决办法
4615
查看次数

使用jQuery计算段落中的字符(*not*表示输入/ textarea)

我如何在jQuery中处理ap/div标签的字符计数器?

基本上我想在字符值> = 50时显示不同的css值.

一直苦苦挣扎几个小时:)

html javascript jquery

8
推荐指数
2
解决办法
1万
查看次数

在HTML5中,我应该使用文章或部分标签来制作标签吗?

我想为我在HTML5中构建的设计创建一组内容选项卡.我想知道我是否应该使用一组<article><section>标签来包含内容?

html css html5

5
推荐指数
1
解决办法
2360
查看次数

如何正确实现C++中的工厂方法模式

C++中的这一件事让我感到不舒服很长一段时间,因为我老实说不知道该怎么做,尽管听起来很简单:

如何正确地在C++中实现Factory方法?

目标:允许客户端使用工厂方法而不是对象的构造函数来实例化某个对象,而不会产生不可接受的后果和性能损失.

"工厂方法模式"是指对象内部的静态工厂方法或另一个类中定义的方法,或全局函数.通常只是"将类X的实例化的正常方式重定向到构造函数之外的任何其他位置的概念".

让我略过一些我想到过的可能答案.


0)不要制造工厂,制造建造者.

这听起来不错(实际上通常是最好的解决方案),但不是一般的补救措施.首先,有些情况下,对象构造是一个复杂的任务,足以证明它被提取到另一个类.但即使将这个事实放在一边,即使对于仅使用构造函数的简单对象,通常也不会这样做.

我所知道的最简单的例子是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指针.


1)Java方式

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)

c++ design-patterns idioms factory-method

309
推荐指数
7
解决办法
16万
查看次数

如何更改单选按钮的默认外观,而不是功能?

在表格上我有两个单选按钮.我想更改单选按钮的默认外观

在此输入图像描述在此输入图像描述

喜欢这个.

在此输入图像描述

编辑:我想在启用JavaScript时将radio按钮更改为<a>锚点,如果通过css更改默认无线电的外观并不容易.

javascript css xhtml jquery radio-button

3
推荐指数
1
解决办法
2192
查看次数