小编Hum*_*art的帖子

Python 3对象构造:哪个是最Pythonic /可接受的方式?

在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中构建我的对象?是否有公认的惯例?

python conventions python-3.x

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

8
推荐指数
2
解决办法
6794
查看次数

Python 3:到datetime的时间戳:这个额外的小时来自哪里?

我正在使用以下功能:

# 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)

datetime python-3.x

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

Python 3:接收用户输入,包括换行符

我试图从Python 3中的命令行读取以下文本(复制了逐字,换行和全部):

lcbeika
rraobmlo
grmfina
ontccep
emrlin
tseiboo
edosrgd
mkoeys
eissaml
knaiefr
Run Code Online (Sandbox Code Playgroud)

使用input,我只能读取第一个单词,因为它读取它停止阅读的第一个换行符.

有没有一种方法可以在没有迭代调用的情况下阅读它们input

python input python-3.x

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

如何对齐多个表单元素?

我对设计一无所知,我试图让一个简单的HTML表单看起来像这样: .

基本上,它是一个包含三个输入字段和一个提交按钮的表单.

关于输入字段,有两个在顶部,一个在下面.我希望它们彼此完全中心对齐,第二个要拉伸到与上面相同的宽度.

关于提交按钮,我希望它与输入字段在水平和垂直方向上完全中心对齐,但是在这些按钮的右侧.

我并不担心它不是完全跨浏览器.

感谢您的任何指示!

编辑:我更喜欢它是用CSS完成而不是基于表格.(我听说基于表格的只是简单的邪恶.)

html css web

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

将Java类文件关联在双击Windows上运行

如果有一件事让我厌烦Java,那就是你无法双击一个类文件来运行.我假设在注册表中有一个条目,必须进行编辑才能做到这一点,但我没有任何线索.

所以,正如它在锡上所说的那样.有没有人知道如何关联Java类文件以便在Windows上双击运行(我的目标是Windows 7,但我确定三个最新版本没有区别)?这将使我的生活(我相信很多其他人)更容易!

Udpate:我已经看到了有关在课堂上制作JAR并以此方式运行的答案.无论多么有用,这都不是我在这里寻找的.我正在寻找Windows本身,java双击时使用正确的参数调用类.

java registry explorer windows-7

5
推荐指数
2
解决办法
5995
查看次数

将日期,日期时间转换为时间戳

如何从Python datedatetimePython中生成毫秒精度的时间戳?

有大量的方法和方法可以做到这一点,我想知道哪种方法和方法最为火爆.

python datetime python-3.x

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

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

如何判断一个对象是否是一个序列

我可以想到两种方法来判断一个对象是否是一个序列:

  • hasattr(object, '__iter__')
  • 以及调用是否iter(object)引发TypeError.

由于请求宽恕而不是请求许可是最 Pythonic 的,所以我会使用第二个习惯用法,尽管我认为它更难看(此外,一旦捕获到TypeError确定对象不是序列,就会引发异常产生不需要的“双异常”堆栈跟踪)。

最终,检查对象是否定义了__iter__方法是否足以确定对象是否是序列?(例如,在旧版本的 Python 中,str没有定义__iter__方法;我还听说某些对象也可以简单地定义和使用,__getitem__而不需要定义__iter__and 充当序列。)或者是定义序列的__iter__ 契约?

python collections python-3.x

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

最有效的习惯用法只从文件中读取一个整数?

在尝试解决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字符串?,但我不知道回答这个问题的成语的效率.

看看我的代码,看起来很多行代码和对象都是一个微不足道的问题......

java io performance file

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