在Java中有一个非常冗长和严格的背景,我发现能够改变Python对象,以便为它们提供除了提供给构造函数之外的字段真的"丑陋".
试图让自己习惯于Pythonic的思维方式,我想知道我应该如何构建我的对象.
我的直觉是必须在施工时传递字段,例如:
def __init__(self, foo, bar, baz=None):
self.foo = foo
self.bar = bar
self.baz = baz
Run Code Online (Sandbox Code Playgroud)
但是,这可能会变得过于冗长和令人困惑,许多领域都要通过.为了克服这个问题,我假设最好的方法是将一个字典传递给构造函数,从中提取字段:
def __init__(self, field_map):
self.foo = field_map["foo"]
self.bar = field_map["bar"]
self.baz = field_map["baz"] if baz in field_map else None
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种机制是在其他地方添加字段,例如:
class Blah(object):
def __init__(self):
pass
...
blah = Blah()
blah.foo = var1
Run Code Online (Sandbox Code Playgroud)
但随着那种感觉这样太松了我.
(我想我脑子里的问题是我如何处理Python中的接口 ......)
所以,重申一个问题:我应该如何在Python中构建我的对象?是否有公认的惯例?
Gecko允许您为requiredHTML表单字段设置错误消息x-moz-errormessage.
什么是WebKit的等价物?
我正在使用以下功能:
# The epoch used in the datetime API.
EPOCH = datetime.datetime.fromtimestamp(0)
def timedelta_to_seconds(delta):
seconds = (delta.microseconds * 1e6) + delta.seconds + (delta.days * 86400)
seconds = abs(seconds)
return seconds
def datetime_to_timestamp(date, epoch=EPOCH):
# Ensure we deal with `datetime`s.
date = datetime.datetime.fromordinal(date.toordinal())
epoch = datetime.datetime.fromordinal(epoch.toordinal())
timedelta = date - epoch
timestamp = timedelta_to_seconds(timedelta)
return timestamp
def timestamp_to_datetime(timestamp, epoch=EPOCH):
# Ensure we deal with a `datetime`.
epoch = datetime.datetime.fromordinal(epoch.toordinal())
epoch_difference = timedelta_to_seconds(epoch - EPOCH)
adjusted_timestamp = timestamp - epoch_difference
date = …Run Code Online (Sandbox Code Playgroud) 我试图从Python 3中的命令行读取以下文本(复制了逐字,换行和全部):
lcbeika
rraobmlo
grmfina
ontccep
emrlin
tseiboo
edosrgd
mkoeys
eissaml
knaiefr
Run Code Online (Sandbox Code Playgroud)
使用input,我只能读取第一个单词,因为它读取它停止阅读的第一个换行符.
有没有一种方法可以在没有迭代调用的情况下阅读它们input?
我对设计一无所知,我试图让一个简单的HTML表单看起来像这样:
.
基本上,它是一个包含三个输入字段和一个提交按钮的表单.
关于输入字段,有两个在顶部,一个在下面.我希望它们彼此完全中心对齐,第二个要拉伸到与上面相同的宽度.
关于提交按钮,我希望它与输入字段在水平和垂直方向上完全中心对齐,但是在这些按钮的右侧.
我并不担心它不是完全跨浏览器.
感谢您的任何指示!
编辑:我更喜欢它是用CSS完成而不是基于表格.(我听说基于表格的只是简单的邪恶.)
如果有一件事让我厌烦Java,那就是你无法双击一个类文件来运行.我假设在注册表中有一个条目,必须进行编辑才能做到这一点,但我没有任何线索.
所以,正如它在锡上所说的那样.有没有人知道如何关联Java类文件以便在Windows上双击运行(我的目标是Windows 7,但我确定三个最新版本没有区别)?这将使我的生活(我相信很多其他人)更容易!
Udpate:我已经看到了有关在课堂上制作JAR并以此方式运行的答案.无论多么有用,这都不是我在这里寻找的.我正在寻找Windows本身,java双击时使用正确的参数调用类.
如何从Python date或datetimePython中生成毫秒精度的时间戳?
有大量的方法和方法可以做到这一点,我想知道哪种方法和方法最为火爆.
我怎样才能像这样转换元组:
(
('a', 1),
('b', 2)
)
Run Code Online (Sandbox Code Playgroud)
dict:
{
'a': 1,
'b': 2
}
Run Code Online (Sandbox Code Playgroud) 我可以想到两种方法来判断一个对象是否是一个序列:
hasattr(object, '__iter__')。iter(object)引发TypeError.由于请求宽恕而不是请求许可是最 Pythonic 的,所以我会使用第二个习惯用法,尽管我认为它更难看(此外,一旦捕获到TypeError确定对象不是序列,就会引发异常产生不需要的“双异常”堆栈跟踪)。
最终,检查对象是否定义了__iter__方法是否足以确定对象是否是序列?(例如,在旧版本的 Python 中,str没有定义__iter__方法;我还听说某些对象也可以简单地定义和使用,__getitem__而不需要定义__iter__and 充当序列。)或者是定义序列的__iter__ 契约?
在尝试解决Facebook的拼图"Hoppity Hop"时,http: //www.facebook.com/careers/puzzles.php?puzzle_id = 7,我只从一个文件中读取一个整数.我想知道这是否是最有效的机制呢?
private static int readSoleInteger(String path) throws IOException {
BufferedReader buffer = null;
int integer = 0;
try {
String integerAsString = null;
buffer = new BufferedReader(new FileReader(path));
// Read the first line only.
integerAsString = buffer.readLine();
// Remove any surplus whitespace.
integerAsString = integerAsString.trim();
integer = Integer.parseInt(integerAsString);
} finally {
buffer.close();
}
return integer;
}
Run Code Online (Sandbox Code Playgroud)
我看过如何从文件内容创建Java字符串?,但我不知道回答这个问题的成语的效率.
看看我的代码,看起来很多行代码和对象都是一个微不足道的问题......
python ×5
python-3.x ×5
datetime ×2
html ×2
java ×2
collections ×1
conventions ×1
css ×1
dictionary ×1
explorer ×1
file ×1
forms ×1
html5 ×1
input ×1
io ×1
performance ×1
registry ×1
tuples ×1
validation ×1
web ×1
webkit ×1
windows-7 ×1