Так как код declarative_base и zzzeek не работает с sqlalchemy 0.4, я использовал следующий кеш, чтобы новые объекты также оставались уникальными, если они не присутствуют в классе db
FileTypeCache (dict) : def __missing __ (self, key): try: obj = self [key] = Session.query (FileType) .filter_by (typename = key) .one () return obj кроме InvalidRequestError: return obj = self [key] = FileType ( key) return obj
переопределить eq из FileType
class FileType (object): def __init __ (self, typename) self.typename = typename def __eq __ ( self): if isinstance (other, FileType): return self.typename == other.typename else: return False
Хотя ответ @Keith Hill объясняет разницу между методом Replace
и оператором -replace
, чтобы объяснить, почему вы не можете видеть тот же результат, это потому, что вы используете метод String.Replace
, который заменяет строку и Оператор -replace
использует замену regex. Вы можете использовать метод Regex.Replace для этой цели, и вы должны увидеть тот же эффект:
[regex]::replace($a,'.:\\LOGROOT\\', "\\$env:computername\logroot\")
Короче говоря, оператор -replace
такой же, как Regex.Replace
(конкретная перегрузка, связанная выше), но в целом Replace()
может быть экземпляром или статическим методом, который может делать что-либо совершенно отличное от -replace
Это не одно и то же. .Replace
- это .NET-метод либо на System.String, либо на любой другой тип с методом экземпляра с именем Replace
. -replace
- это оператор PowerShell, который использует регулярные выражения. Запустите man about_operators
, чтобы получить дополнительную информацию об операторе -replace
.
a -replace b,c
- метод .NET Regex.Replace(a, b, c, RegexOptions.IgnoreCase)
.
– Richard
17 April 2012 в 08:57