python使用提案とテクニックの共有(四)


これは一連の文章で、主にpythonの使用提案と技巧を共有して、毎回3点を共有して、収穫があることを望みます。
1より読みやすいクラスをどのように印刷しますか?
おすすめしない方法

class Point(object):
  def __init__(self, x, y):
    self.x = x
    self.y = y


p = Point(3, 4)

print p
# <__main__.Point object at 0x0000000001E1B9E8>
おすすめの方法

class Point(object):
  def __init__(self, x, y):
    self.x = x
    self.y = y

  def __repr__(self):
    return 'Point({self.x}, {self.y})'.format(self=self)


p = Point(3, 4)

print p
# Point(3, 4)
前の方式で印刷したクラスは読みにくくて、もっと多くの情報を得ることができません。クラスを通してプレス.方法はクラスをより読みやすく印刷できます。もしくは定義しないプレス.方法は、直接に次のように印刷します。

print p.__dict__
# {'y': 4, 'x': 3}
__を使うdict_.方法は、クラスを辞書の形で印刷しても読みやすいです。
2どのようにクラスをjson文字列に印刷しますか?

import json


class User(object):
  def __init__(self, name, id):
    self.name = name
    self.id = id


u = User('user1', 1)
print json.dumps(u.__dict__, indent=4)

'''
{
  "name": "user1",
  "id": 1
}
'''
jsonモジュールのdumps方法により、簡単にクラスをjson文字列に印刷することができます。
3クラスリストの並べ替え方法

class User:
  def __init__(self, name, key):
    self.name = name
    self.key = key

  def __repr__(self):
    return 'User({self.name}, {self.key})'.format(self=self)


user_list = [
  User('user1', 3),
  User('user2', 2),
  User('user3', 1),
]

print sorted(user_list, key=lambda user: user.key)
# [User(user3, 1), User(user2, 2), User(user1, 3)]
print sorted(user_list, key=lambda user: user.name)
# [User(user1, 3), User(user2, 2), User(user3, 1)]
ここで並べ替えの方法は辞書の並べ替えと似ています。第一はuserのkey昇順で並べ替えられます。第二はuserのname昇順で並べ替えられます。名前が同じで、キーで並べ替えられます。

user_list = [
  User('user1', 3),
  User('user1', 2),
  User('user1', 1),
]

print sorted(user_list, key=lambda user: (user.name, user.key))
# [User(user1, 1), User(user1, 2), User(user1, 3)]
以上はpythonを使って提案と技巧を使って(4)の詳しい内容を分かち合って、更にpythonに関して提案と技巧の資料に関して私達のその他の関連している文章に注意して下さい!