2024-05-13 09:21:27 发布
网友
我隐约记得我在Minecraft moding的日子里,在java中,可以在一行中设置多个类变量,如下所示:
SomeBlock.hardness(0.5).isOpaque(True).blastResistance(2).etc.etc
我想知道在python中是否有类似的方法。但是我在第一个类中尝试了修改,而不是第一个类。在
有办法吗?在
the second one ends up thinking it is supposed to modify the return of the first one instead of the original class。是的,这是正常的Python语法。返回self不会创建特殊语法。它只是确保返回的对象是正确的链接对象。在
the second one ends up thinking it is supposed to modify the return of the first one instead of the original class
self
您的初始化任务通常编码为
class SomeBlock(): def __init__(self, hardness=None, opaque=False, blastResistance=None): self.hardness = hardness self.opaque = opaque self.blastResistance = blastResistance ablock = SomeBlock(hardness=0.5, opaque=True, blastResistance=2)
而且由于Python不需要访问属性的方法,所以您还可以编写
Python
因此,如果一个方法确实返回self,则通常实现一个比设置属性更复杂的方法。在
更常见的是让方法返回同一类的新对象。例如,这是许多numpy数组方法中的典型方法。A.dot(B)返回新数组,即取A和B的点积的结果。A.dot(B).dot(C)看起来像链接,但只是对连续数组的一系列操作。在
numpy
A.dot(B)
A
B
A.dot(B).dot(C)
是的,您可以这样做,事实上,它的实现方式与在Java中相同:通过返回self引用。在
class SomeBlock(object): def hardness(self, blah): self.hardness = blah return self def isOpaque(self, value): self.isOpaque = value return self a = SomeBlock() a.hardness(0.5).isOpaque(true)
这只是一个流畅的界面,设计成这样。它主要是通过返回相同的对象来创建的:
class Test: def setX(self, x): self.x = x return self def setY(self, x): self.y = y return self t = Test() t.setX(12).setY(11)
the second one ends up thinking it is supposed to modify the return of the first one instead of the original class
。是的,这是正常的Python语法。返回self
不会创建特殊语法。它只是确保返回的对象是正确的链接对象。在您的初始化任务通常编码为
而且由于
^{pr2}$Python
不需要访问属性的方法,所以您还可以编写因此,如果一个方法确实返回
self
,则通常实现一个比设置属性更复杂的方法。在更常见的是让方法返回同一类的新对象。例如,这是许多
numpy
数组方法中的典型方法。A.dot(B)
返回新数组,即取A
和B
的点积的结果。A.dot(B).dot(C)
看起来像链接,但只是对连续数组的一系列操作。在是的,您可以这样做,事实上,它的实现方式与在Java中相同:通过返回
self
引用。在这只是一个流畅的界面,设计成这样。它主要是通过返回相同的对象来创建的:
相关问题 更多 >
编程相关推荐