我提出这个问题是因为几天前我在这里提出的另一个问题.
我必须解决一个特定的问题,在得到两个回复后,我意识到两个模式可以帮助解决这个问题(以及任何其他类似问题).
我的问题是:
这些模式之间究竟有什么区别?
如果有更简单的方法将类属性分配给方法本地命名空间,我一直想知道.例如,在dosomething方法中,我明确地引用self.a和self.b:
class test:
def __init__(self):
self.a = 10
self.b = 20
def dosomething(self):
a = self.a
b = self.b
return(a + b)
Run Code Online (Sandbox Code Playgroud)
但有时我有很多变量(超过10个)并且输入和查看会变得混乱 - 我会var = self.var在方法的开头有一堆语句.
有没有办法以更紧凑的方式做到这一点?(我知道更新local()不是一个好主意)
编辑:理想情况下,我想要的是:
def dosomething(self):
populate_local_namespace('a', 'b')
return(a + b)
Run Code Online (Sandbox Code Playgroud) 我在我的第一个WPF应用程序中使用MVVM模式,并且遇到了我认为非常基本的问题.
当用户点击我视图上的"保存"按钮时,会执行一个命令,该命令在我的ViewModel中调用私有void Save().
问题是"Save()"中的代码需要一些时间来执行,所以我想在执行大块代码之前隐藏UI视图中的"保存"按钮.
问题是视图不会更新,直到所有代码都在viewmodel中执行.在执行Save()代码之前,如何强制视图重绘并处理PropertyChanged事件?
另外,我想要一种可重复使用的方式,这样我也可以轻松地在其他页面中做同样的事情.其他人已经做过这样的事了吗?一个"正在加载......"的消息?
我有两个数组.喜欢:
Bear, prince, dog, Portugal, Bear, Clown, prince, ...
第二个:
45, 67, 34, 89, ...
我想将第一个数组中的字符串键转换为变量,并将它们设置为等于第二个数组中的数字.
可能吗?
我想知道以下是否可行:
该方法Regex.Match可以接收枚举,所以我可以指定:
RegexOptions.IgnoreCase
RegexOptions.IgnorePatternWhiteSpace
RegexOptions.Multiline
Run Code Online (Sandbox Code Playgroud)
如果我需要指定的不仅仅是一个,该怎么办?(例如,我想要我的正则表达式Multiline,我希望它忽略模式空白).
我可以|在C/C++中使用运算符吗?
我发现有一件事让我发疯.如果我指定以下列表:
lVals = [1, 01, 2011]
Run Code Online (Sandbox Code Playgroud)
然后不会显示任何错误,如果我使用会发生相同的情况02,03,04,05,06,07,但是如果我使用08或09作为列表中的第二项,我会得到以下异常:
>>> a = [26, 08, 2011]
File "<stdin>", line 1
a = [26, 08, 2011]
^
SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)
当我将这些数字(08,09)放在列表中的任何位置(例如[08,10,2011])时,也会出现相同的行为,即使我尝试分配08给单个int变量,我也会得到相同的异常.
这有什么原因吗?
我实际上在django项目中工作,我不确定访问一个特定对象页面的URL的最佳格式.
我在想这些替代方案:
1) Using the autoincremental ID => .com/object/15
Run Code Online (Sandbox Code Playgroud)
这是最简单和众所周知的方法."id_object"是数据库引擎在保存对象时生成的自动增量ID.我以这种方式找到的问题是URL是简单的可迭代的.因此,我们可以通过增加URL中的ID来创建一个简单的脚本并访问所有页面.也许是一个安全问题.
2) Using a <hash_id> => .com/object/c30204225d8311e185c3002219f52617
Run Code Online (Sandbox Code Playgroud)
"hash_id"应该是一些字母数字字符串值,例如使用uuid函数生成.这是一个好主意,因为它不可迭代.但生成"随机"唯一ID可能会导致一些问题.
3) Using a Slug => .com/object/some-slug-generated-with-the-object
Run Code Online (Sandbox Code Playgroud)
Django为模型提供了一个"slug"字段,它可用于识别URL中的对象.我在这种情况下发现的问题是slug可能会在时间上发生变化,从而产生损坏的URL.如果某些搜索引擎(如Google)已将此网址编入索引,则可能会将用户引导至"未找到"网页,我们的网页排名可能会降低.冻结弹头可以解决问题.我的意思是,仅在"添加"操作中保存slug,而不是在"Update"操作中保存.但是slu the现在可以代表旧的或不正确的东西.
所有选项都有优点和缺点.可能会使用它们的某些组合可以解决一些问题.你觉得怎么样?
我正在编写一个Tiger编译器C#,我将把Tiger代码翻译成IL.
在实现AST中每个节点的语义检查时,我为此创建了许多单元测试.这很简单,因为我的CheckSemantic方法看起来像这样:
public override void CheckSemantics(Scope scope, IList<Error> errors) {
...
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想为某个节点的语义检查编写一些单元测试,我所要做的就是构建一个AST,然后调用该方法.然后我可以这样做:
Assert.That(errors.Count == 0);
Run Code Online (Sandbox Code Playgroud)
要么
Assert.That(errors.Count == 1);
Assert.That(errors[0] is UnexpectedTypeError);
Assert.That(scope.ExistsType("some_declared_type"));
Run Code Online (Sandbox Code Playgroud)
但是我现在正在开始代码生成,而且我不知道在为该阶段编写单元测试时可能是一个好的做法.
我正在ILGenerator上课.我考虑过以下几点:
但我想知道是否有更好的方法呢?
随着数据库大小的增加,我的查询执行时间更长.查询已经过优化和必要,但我的C#控制台应用程序最近给了我这个错误:
Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Timeout expired.
Run Code Online (Sandbox Code Playgroud)
增加连接字符串中的连接超时没有帮助; 我增加了它
连接超时= 28800
至
连接超时= 128800
但尽管有这种变化,我仍然会得到错误.
如果我从MySQL工作台运行查询它只需要大约10秒,所以我不知道如何防止这种未处理的异常.
除了"查询所花费的时间"之外还有其他什么可以产生这种异常吗?
c# ×3
php ×2
python ×2
arrays ×1
class ×1
compilation ×1
django ×1
enums ×1
identifier ×1
javascript ×1
key ×1
mvvm ×1
mysql ×1
namespaces ×1
parameters ×1
regex ×1
string ×1
tiger ×1
unit-testing ×1
url ×1
variables ×1
wpf ×1