一个非常简单的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)

我目前正在阅读正式的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) {
        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字母,也不是真正的程序员,因为你不能解决这么简单的问题:)谢谢你的回答。实际上这不是家庭作业。我当时正在为面试做准备,时间实在太短了。:-)