问题列表 - 第18466页

为什么 getattr() 没有像我想象的那样工作?我认为这段代码应该打印“sss”

接下来是我的代码:

class foo:
    def __init__(self):
        self.a = "a"
    def __getattr__(self,x,defalut):
        if x in self:
            return x
        else:return defalut

a=foo()
print getattr(a,'b','sss')
Run Code Online (Sandbox Code Playgroud)

我知道__getattr__必须是 2 个参数,但如果该属性不存在,我想获得一个默认属性。

我怎样才能得到它,谢谢


我发现如果定义了__setattr__,我的下一个代码也无法运行

class foo:
    def __init__(self):
        self.a={}
    def __setattr__(self,name,value):
            self.a[name]=value

a=foo()#error ,why
Run Code Online (Sandbox Code Playgroud)

嗨亚历克斯,我改变了你的例子:

class foo(object):
    def __init__(self):
        self.a = {'a': 'boh'}
    def __getattr__(self, x):
        if x in self.a:
            return self.a[x]
        raise AttributeError

a=foo()
print getattr(a,'a','sss')
Run Code Online (Sandbox Code Playgroud)

它打印 {'a': 'boh'},而不是 'boh' 我认为它会打印 self.a 而不是 self.a['a'],这显然是不想看到的

为什么,有什么方法可以避免它

python

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

检查用户是否已登录?

你如何检查用户是否已经登录?

这样,如果另一个浏览器中的用户无法使用同一帐户登录.

另外,这是一个很好的解决方案还是我应该让用户在其他浏览器中登录然后注销当前用户并显示一条消息(您从其他位置登录)就像信使一样?

php session

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

Erlang/ets:在得到"坏参数"后重置ets表?

我一直在学习如何使用ets,但有一件困扰我的事情是,偶尔*ets:match会抛出一个bad argument......而且,从它们开始,所有后续调用(甚至以前工作的调用)也会抛出bad argument:

> ets:match(Tid, { [$r | '$1'] }, 1).
% this match works...
% Then, at some point, this comes up:
** exception error: bad argument
     in function  ets:match/3
        called as ets:match(24589,{[114|'$1']},1)
% And from then on, matches stop working:
> ets:match(Tid, { [$r | '$1'] }, 1).
** exception error: bad argument
     in function  ets:match/3
        called as ets:match(24589,{[114|'$1']},1)

有没有办法"重置" ets系统,以便我可以再次查询它(即从shell)?

*:我无法重现这个问题......但是当我试图做"其他事情"时,它经常发生.

erlang ets

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

在Python中指定input()类型?

是否可以定义输入时间,如时间,日期,货币或应手动验证?例如:

morning = input('Enter morning Time:')
evening = input('Enter evening Time:')
Run Code Online (Sandbox Code Playgroud)

..我需要(仅)时间,如何确保用户输入xx:xx格式的输入,其中xx只是整数.

python types input

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

通过python将一个大字符串拆分为多个包含'n'个字的子字符串

资料来源:美国独立宣言

如何将上述源文本拆分为多个子字符串,包含"n"个字?

我使用split('')来提取每个单词,但是我不知道如何在一个操作中使用多个单词.

我可以浏览我所拥有的单词列表,并通过将第一个列表中的单词粘合在一起来创建另一个单词(同时添加空格).然而,我的方法不是非常pythonic.

python string split words substring

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

mysql与LOAD DATA INFILE重复

使用LOAD DATA INFILE时,有没有办法标记重复行,或将任何/所有重复项转储到单独的表中?

mysql sql database duplicates load-data-infile

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

php语法,数组和错误

为什么下面的代码在php中给我一个错误?:

$b = array("1" => "2")["1"];

我得到的错误是Parse错误...

救命.

php arrays

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

JQuery UI对话框 - *对话框不是函数*错误

我正在使用pinax开发一个网站.在我的一个模板中,我试图打开一个简单的jquery对话框.但是我一直得到"Dialog not a function"javascript错误.我使用的是jquery 1.2.6和jquery-ui 1.6.我的javascript和HTML如下:

<html>
<head>
<link type="text/css" href="/site_media/smoothness/ui.all.css" rel="stylesheet" />
<script src="/site_media/jquery.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.core.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.draggable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.resizeable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.dialog.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
                    $('#dialogbox').dialog();
            });
 </script>
 </head>
 <body>
   <div id="dialogbox" title="dialog title">
     <p>Test dialog</p>
   </div>
 </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?

jquery jquery-ui jquery-ui-dialog

17
推荐指数
1
解决办法
6万
查看次数

Cocoa和OpenGL,如何使用数组设置GLSL顶点属性?

我是OpenGL的新手,我似乎遇到了一些困难.我在GLSL中编写了一个简单的着色器,它应该通过给定的联合矩阵变换顶点,允许简单的骨架动画.每个顶点最多有两个骨骼影响(存储为Vec2的x和y分量),索引和与变换矩阵数组相关联的相应权重,并在我的着色器中指定为"属性变量",然后设置使用"glVertexAttribPointer"函数.

这就是问题出现的地方......我已经设法正确设置了"统一变量"矩阵数组,当我在着色器中检查这些值时,所有这些值都被正确导入并且它们包含正确的数据.但是,当我尝试设置关节Indices变量时,顶点乘以任意变换矩阵!它们跳到空间中看似随机的位置(每次都是不同的)我假设索引设置不正确并且我的着色器正在读取超过我的关节矩阵数组的末尾到下面的内存中.我不确定为什么,因为在阅读了关于这个主题的所有信息之后,我很惊讶地看到他们的例子中的相同(如果不是非常相似)代码,它似乎对他们有用.

我已经尝试解决这个问题很长一段时间了,它真的开始让我神经紧张......我知道矩阵是正确的,当我手动将着色器中的索引值更改为任意整数时,它会读取正确的矩阵值和它应该的方式工作,通过该矩阵转换所有顶点,但是当我尝试使用我写的代码来设置属性变量时,它似乎不起作用.

我用来设置变量的代码如下......

// this works properly...
GLuint boneMatLoc = glGetUniformLocation([[[obj material] shader] programID], "boneMatrices");
glUniformMatrix4fv( boneMatLoc, matCount, GL_TRUE, currentBoneMatrices );

GLfloat testBoneIndices[8] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};

// this however, does not...
GLuint boneIndexLoc = glGetAttribLocation([[[obj material] shader] programID], "boneIndices");
glEnableVertexAttribArray( boneIndexLoc );
glVertexAttribPointer( boneIndexLoc, 2, GL_FLOAT, GL_FALSE, 0, testBoneIndices );
Run Code Online (Sandbox Code Playgroud)

我的顶点着色器看起来像这样......

// this shader is supposed to transform the bones by a skeleton, a maximum of two
// bones per vertex with varying …
Run Code Online (Sandbox Code Playgroud)

opengl shader attributes glsl vertex

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

关于std :: cin的一个问题

int i,j;

std::string s;

std::cin>>i>>j>>s>>s>>i;

std::cout<<i<<" "<<j<<" "<<s<<" "<<i;
Run Code Online (Sandbox Code Playgroud)

问题参考上面的示例代码,如果给出的输入字符串是"5 10 Sample Word 15 20",显示的输出是什么?

答案是

15 10 Word 15

我有一个问题是cin过度编写现有值的下划线政策是什么?后者只会覆盖前一个吗?还有其他情况吗?

我检查了很多书,但我找不到解释这个的书.

c++

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