zoukankan      html  css  js  c++  java
  • python基础===修改属性的值

    可以以三种不同的方式修改属性的值:直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)。下面依次介绍这些方法。

    class Car():
    def __init__(self, make, model, year):
    """初始化描述汽车的属性"""
      self.make = make
      self.model = model
      self.year = year
      self.odometer_reading = 0       #修改这个属性的值
    
    def read_odometer(self): """打印一条指出汽车里程的消息"""   print("This car has " + str(self.odometer_reading) + " miles on it.")
    my_new_car
    = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()

    1.直接修改属性的值

    要修改属性的值,最简单的方式是通过实例直接访问它。下面的代码直接将里程表读数设置为23:

    class Car():
      --snip--

    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())

    my_new_car.odometer_reading = 23 my_new_car.read_odometer()

    我们使用句点表示法来直接访问并设置汽车的属性odometer_reading。这行代码让Python在实例my_new_car中找到属性odometer_reading,并将该属性的值设置为23:

    2016 Audi A4
    This car has 23 miles on it.

    有时候需要像这样直接访问属性,但其他时候需要编写对属性进行更新的方法。

     

    2. 通过方法修改属性的值

    如果有替你更新属性的方法,将大有裨益。这样,你就无需直接访问属性,而可将值传递给一个方法,由它在内部进行更新。
    下面的示例演示了一个名为update_odometer()的方法:

    class Car():
        --snip--
    
        def update_odometer(self, mileage):
            """将里程表读数设置为指定的值"""    
            self.odometer_reading = mileage
    
    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    
    my_new_car.update_odometer(23)
    my_new_car.read_odometer()


    >>>2016 Audi A4
    This car has 23 miles on it.

    对Car类所做的唯一修改是添加了方法update_odometer()。这个方法接受一个里程值,并将其存储到self.odometer_reading中。我们调用了update_odometer(),并向它提供了实参23(该实参对应于方法定义中的形参mileage)。它将里程表读数设置为23.

    可对方法update_odometer()进行扩展,使其在修改里程表读数时做些额外的工作。下面来添加一些逻辑,禁止任何人将里程表读数往回调:

    class Car():
        --snip--
        def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
             self.odometer_reading = mileage
           else:
               print("You can't roll back an odometer!")        

    现在,update_odometer()在修改属性前检查指定的读数是否合理。如果新指定的里程(mileage)大于或等于原来的里程(self.odometer_reading),就将里程表读数改为新指定的里程;否则就发出警告,指出不能将里程表往回拨.

    3. 通过方法对属性的值进行递增

    class Car():
      --snip--
      def update_odometer(self, mileage):
        --snip--
      def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        self.odometer_reading += miles
    my_used_car
    = Car('subaru', 'outback', 2013) print(my_used_car.get_descriptive_name()) my_used_car.update_odometer(23500) my_used_car.read_odometer()
    my_used_car.increment_odometer(
    100) my_used_car.read_odometer()


    >>>2013 Subaru Outback
    This car has 23500 miles on it.
    This car has 23600 miles on it.

    新增的方法increment_odometer()接受一个单位为英里的数字,并将其加入到self.odometer_reading中。在处,我们创建了一辆二手车——my_used_car。我们调用方法update_odometer()并传入23500,将这辆二手车的里程表读数设置为23 500。我们调用increment_odometer()并传入100,以增加从购买到登记期间行驶的100英里.

     

    顺便提一下


    如果你也喜欢Python 这里有一群Python爱好者汇集在此。

    关注微信公众号:【软件测试技术】,回复 888,获取QQ群号。 

  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/botoo/p/7866106.html
Copyright © 2011-2022 走看看