2

Python には、 type int、つまりのメソッドがありますint.from_bytes。これは特定の int のメソッドではなく、型のメソッドです。例えば

>>> int.from_bytes(b'\xee\xff',"big")
61183

>>> int.from_bytes
<built-in method from_bytes of type object at 0x107fdb388>

このようなものをどのように定義しますか? 「ポイント」というクラスが定義されているとしましょう。次のようなものを定義するにはどうすればよいですか

>>> point.from_coordinates(3,5)
<__main__.point object at 0x10c0c9310>

>>> point.from_keys(b'\x12\x3e')
<__main__.point object at 0x10bed5890>

? (ポイントが何らかの異なる方法で初期化されていると仮定します。)

4

2 に答える 2

3

classmethodintを期待するモックアップの例のような を使用できますが、文字列を取得して整数に変換しようとするinit便利な も提供します...from_hex

class MyClass(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    @classmethod
    def from_hex(cls, a, b):
        return cls(int(a, 16), int(b, 16))

from_hex関連付けられているクラスを認識しているため、 を呼び出すことで、有効な整数を自分で記述したかcls(...)のように の型を構築できます。MyClassMyClass(a, b)

于 2013-06-24T20:27:55.703 に答える