在C#中有一个null-coalescing运算符(写为??),允许在赋值期间进行简单(短)空检查:
string s = null;
var other = s ?? "some default value";
Run Code Online (Sandbox Code Playgroud)
是否有python等价物?
我知道我能做到:
s = None
other = s if s else "some default value"
Run Code Online (Sandbox Code Playgroud)
但是有更短的方式(我不需要重复s)?
我正在尝试对动态添加到页面上的某个容器的元素进行一些条件操作,但我错过了一个事件.
说我有一个容器:
<div id="container"></div>
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将事件处理程序绑定到所有新元素的click函数
$('#container').on('click', '.sub-element', function() { ... });
Run Code Online (Sandbox Code Playgroud)
但是,为了在添加元素时获得"一次性"钩子,我应该绑定什么#container.我试图绑定ready并load无济于事.有没有办法做到这一点,或者我是否必须为我的问题提出另一种解决方案?
我通常以下列方式检查构造函数参数的空值:
public class SomeClass(SomeArgument someArgument)
{
if(someArgument == null) throw new ArgumentNullException("someArgument");
}
Run Code Online (Sandbox Code Playgroud)
但是说我有一个继承自另一个类的类:
public abstract class TheBase
{
public TheBase(int id)
{
}
}
public class TheArgument
{
public int TheId { get; set; }
}
public class TheInheritor : TheBase
{
public TheInheritor(TheArgument theArgument) : base(theArgument.TheId)
{
}
}
Run Code Online (Sandbox Code Playgroud)
有人现在构造一个这样的实例TheInheritor:
var theVar = new TheInheritor(null);
Run Code Online (Sandbox Code Playgroud)
我想不出一种方法可以null在base被调用之前检查(并抛出一个NullReferenceException).如果没有让TheBase构造函数接受TheArgument我的实例,我就无法看到如何进行这种理智检查.但是,如果TheArgument仅与之相关TheInheritor并且还有很多其他类继承自己TheBase呢?
有关如何解决这个问题的任何建议?
我需要复制一个给定日期100次(我不能通过参考传递).我想知道下面哪两个是更好的选择
newTime=Calendar.getInstance().setTime(originalDate);
Run Code Online (Sandbox Code Playgroud)
要么
newTime=originalDate.clone();
Run Code Online (Sandbox Code Playgroud)
表演在这里是主要的.
谢谢.
随着最近发布的NDB,有没有理由继续使用旧的数据存储区API?
我正在开发一个当前使用旧数据存储区API的应用程序,我已经花了很多精力来缓存memcache中的对象.我的理解是正确的,通过更改为NDB,我可以删除自定义缓存,并保持当前的性能吗?
此外,NDB是否会以任何方式改变对分片计数器的需求?NDB中以某种方式更改了实体(组)每秒5次写入的限制吗?
编辑
鉴于我的应用程序仍在开发中,并且我没有我无法轻易删除的实体,在更改为NDB之前是否应该考虑一些问题,还是只需更改db.Model为ndb.Model?
假设我们的系统可以执行操作,并且操作需要一些参数来完成其工作.我为所有操作定义了以下基类(简化了您的阅读乐趣):
public abstract class BaseBusinessAction<TActionParameters>
: where TActionParameters : IActionParameters
{
protected BaseBusinessAction(TActionParameters actionParameters)
{
if (actionParameters == null)
throw new ArgumentNullException("actionParameters");
this.Parameters = actionParameters;
if (!ParametersAreValid())
throw new ArgumentException("Valid parameters must be supplied", "actionParameters");
}
protected TActionParameters Parameters { get; private set; }
protected abstract bool ParametersAreValid();
public void CommonMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)
只有具体实现BaseBusinessAction知道如何验证传递给它的参数是否有效,因此它
ParametersAreValid是一个抽象函数.但是,我希望基类构造函数强制传递的参数始终有效,所以我添加了ParametersAreValid对构造函数的调用,并在函数返回时抛出异常false.到目前为止一切都那么好吧?好吧,不.代码分析告诉我" 不要在构造函数中调用可覆盖的方法 "这实际上很有意义,因为当调用基类的构造函数时,子类的构造函数尚未被调用,因此该ParametersAreValid方法可能无法访问某些关键子类的构造函数将设置的成员变量.
所以问题是:我如何改进这个设计?
我是否Func<bool, TActionParameters>向基类构造函数添加了一个参数?如果我做了:
public class MyAction<MyParameters>
{
public MyAction(MyParameters actionParameters, …Run Code Online (Sandbox Code Playgroud) 我总是看到严肃项目中的人们使用::无处不在,而且 - >偶尔只在当地环境中使用.
我只使用 - >我自己,并且在我需要一个类之外的静态值的情况下永远不会结束.我是个坏人吗?
据我了解,唯一->不起作用的情况是我尝试以下时:
class StaticDemo {
private static $static
}
$staticDemo = new StaticDemo( );
$staticDemo->static; // wrong
$staticDemo::static; // right
Run Code Online (Sandbox Code Playgroud)
但是当我不通过简单的公共方法调用时,我是否错过了一些编程正确性::?
或者只是这样我可以在不创建实例的情况下调用方法?
首先,EF不是我们开发环境的选项,所以请不要"只使用EF"答案......
我认为这是一个相当标准的困境,所以我敢肯定大多数专业人士都必须采取一种方式,我只是没有偶然发现...所以我在这里希望你们都能告诉我它是什么.
假设您有以下数据库表:
tblCompanies
ID
NAME
tblDepartments
ID
COMPANY_ID
NAME
tblEmployees
ID
DEPARTMENT_ID
FIRSTNAME
LASTNAME
Run Code Online (Sandbox Code Playgroud)
...在代码中的类中表示这个的最佳方法是什么?
我认为最好的方法是这样的:
public class Company
{
public int ID { get; set; }
public string Name { get; set; }
public List<Department> Departments { get; set; }
}
public class Department
{
public int ID { get; set; }
public string Name { get; set; }
public List<Employee> Employees { get; set; }
}
public class Employee
{
public int ID { get; …Run Code Online (Sandbox Code Playgroud) 有什么办法可以阻止子类覆盖基类中的方法吗?
我的猜测是没有,但我来自.NET世界,我正在努力使我的API尽可能健壮,所以任何输入都非常感激.
class Parent:
def do_something(self):
'''This is where some seriously important stuff goes on'''
pass
class Child(Parent):
def do_something(self):
'''This should not be allowed.'''
pass
Run Code Online (Sandbox Code Playgroud)
是否有可能强制执行此操作?我知道编译器不会有帮助,所以可能通过一些运行时检查?或者它不是一种传播事物的pythonic方式?
c# ×3
python ×3
.net ×2
oop ×2
assemblies ×1
class ×1
coding-style ×1
generics ×1
java ×1
jquery ×1
jquery-1.7 ×1
performance ×1
php ×1
scope ×1
static ×1
version ×1