h__*_*h__ 2 python methods class python-3.x
在python中有一种类型的方法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>
Run Code Online (Sandbox Code Playgroud)
我该如何定义这样的东西?假设定义了一个名为"point"的类,我该如何定义类似的东西
>>> point.from_coordinates(3,5)
<__main__.point object at 0x10c0c9310>
>>> point.from_keys(b'\x12\x3e')
<__main__.point object at 0x10bed5890>
Run Code Online (Sandbox Code Playgroud)
?(假设点通过某种不同的方法初始化.)
你想要的classmethod,通常用作装饰者:
class point(object):
@classmethod
def from_coordinates(cls, x, y):
pt = cls()
pt.x, pt.y = x, y
return pt
Run Code Online (Sandbox Code Playgroud)
这有时被称为"替代构造函数"成语.如果有多种不同的方法来构造您的类型,而不是将它们全部放入一个__init__带有大量可选参数或变量的方法中,请将它们全部放入单独的classmethods中.
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |