一个非常简单的Java程序示例中的Python等价物
我目前正在阅读正式的Java教程,我想将给出的代码示例与Python中的等效代码进行比较。有人能给我以下Java代码的等效Python代码吗:一个非常简单的Java程序示例中的Python等价物,java,python,oop,Java,Python,Oop,我目前正在阅读正式的Java教程,我想将给出的代码示例与Python中的等效代码进行比较。有人能给我以下Java代码的等效Python代码吗: class Bicycle { int cadence = 0; int speed = 0; int gear = 1; void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue)
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear);
}
}
以及从该类实例化的对象:
class BicycleDemo {
public static void main(String[] args) {
// Create two different Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Invoke methods on those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
谢谢
布鲁诺应该是:
class Bicycle:
def __init__(self):
self.cadence = 0
self.speed = 0
self.gear =1
def changeCadence(self, newValue):
self.cadence = newValue
def changeGear(self, newValue):
self.gear = newValue
# and same for other functions
if __name__ == "__main__":
obj = Bicycle()
obj.changeCadence()
更完整、更正确的代码-对象很重要,因为它改变了类模型-构造函数在本例中不是因为没有输入参数-python在本例中具有更快的初始化速度 玩得开心
class Bicycle(object):
cadence = 0
speed = 0
gear = 1
def changeCadence(self, newValue):
self.cadence = newValue
def changeGear(self, newValue):
self.gear = newValue
def speedUp(self, increment):
speed += increament
def applyBrakes(self, descrement):
speed -= decreament
def printStates(self):
print 'cadence: %s speed: %s gear: %s' % (self.cadence, self.speed, self.gear)
if __name__ == "__main__":
# Create two different Bicycle objects
bike1 = Bicycle()
bike2 = Bicycle()
# Invoke methods on those objects
bike1.changeCadence(50)
bike1.speedUp(10)
bike1.changeGear(2)
bike1.printStates()
bike2.changeCadence(50)
bike2.speedUp(10)
bike2.changeGear(2)
bike2.changeCadence(40)
bike2.speedUp(10)
bike2.changeGear(3)
bike2.printStates()
很可能这不是家庭作业:
class Bicycle(object):
def __init__(self, cadence=0, speed=0, gear=1, gearLabels=('A','B','C','D','E')):
super(Bicycle,self).__init__()
self.cadence = cadence
self.speed = speed
self.gearLabels = gearLabels
self._gear = None
self.gear = gear
def speedUp(self, increment):
self.speed += increment
def applyBrakes(self, decrement):
self.speed -= decrement
@property
def gear(self):
return self.gearLabels[self._gear-1]
@gear.setter
def gear(self, gear):
try:
self._gear = self.gearLabels.index(gear) + 1
except ValueError:
if 0 < gear <= len(self.gearLabels):
self._gear = gear
else:
raise ValueError("don't have gear {0}".format(gear))
def incGear(self):
self.gear = self._gear+1
def decGear(self):
self.gear = self._gear-1
def __str__(self):
return "cadence: {0}, speed: {1}, gear: {2}".format(self.cadence, self.speed, self.gear)
def main():
bike1 = Bicycle()
bike1.cadence = 50
bike1.speedUp(10)
bike1.gear = 2
print(bike1)
bike2 = Bicycle()
bike2.cadence = 50
bike2.speedUp(10)
bike2.gear = 2
bike2.cadence = 40
bike2.speedUp(10)
bike2.incGear()
print(bike2)
if __name__ == "__main__":
main()
类自行车(对象):
定义初始(self,cadence=0,speed=0,gear=1,gearLabels=('A','B','C','D','E')):
超级(自行车,自我)。\uuu初始
self.cadence=cadence
自身速度=速度
self.gearLabels=gearLabels
自动档位=无
self.gear=齿轮
def加速(自加速、增量):
自身速度+=增量
def applyBrakes(自动、递减):
自速度-=减量
@财产
def档位(自):
返回self.gear标签[self.\u gear-1]
@齿轮调节器
def档位(自动档位、自动档位):
尝试:
self.\u gear=self.gear标签索引(齿轮)+1
除值错误外:
如果0类自行车上遗漏了一个冒号,正如您所知。-1因为在构造函数之外,参数是类成员,而不是实例成员。由于参数名,这实际上不会起作用!=函数中使用的名称。我认为你懒得修改两个o 3字母,也不是真正的程序员,因为你不能解决这么简单的问题:)谢谢你的回答。实际上这不是家庭作业。我当时正在为面试做准备,时间实在太短了。:-)