zoukankan      html  css  js  c++  java
  • 在python中编写一个简单的关于类的情况遇到的问题(待解决)

    在编写一个关于类的问题时,在car文件中有关于汽车和电动车的描述,还有一些输出语句。当我把汽车这个类引入另外一个文件时,发现整个文件都被执行了。

    源代码如下:

    car.py
    
    
    class Car():
        def __init__(self, make, model, year):
            self.make = make
            self.model = model
            self.year = year
            self.odometer_reading = 0
        def get_descriptive_name(self):
            long_name = str(self.year) + ' ' + self.make + ' ' + self.model
            return long_name.title()
        def read_odometer(self):
            print("This car has " + str(self.odometer_reading) + " miles on it")
        def update_odometer(self, mileage):
            if mileage >= self.odometer_reading:
                self.odometer_reading = mileage
            else:
                print("You can not roll back an odometer!")
        def increment_odometer(self, miles):
            self.odometer_reading += miles
    class Battry():
        def __init__(self, battery_size = 70):
            self.battery_size = battery_size
        def describe_battery(self):
            print("This car has a " + str(self.battery_size) + "-kWH battery.")
        def get_range(self):
            if self.battery_size == 70:
                range = 240
            elif self.battery_size == 85:
                range = 999
            message = "This car go approximately " + str(range)
            message += " miles on a full charge."
            print(message)
    
    class ElectircCar(Car):
        def __init__(self, make, model, year):
            super().__init__(make, model, year)
            self.battery =Battry()
    
    my_tesla = ElectircCar('tesla','model s',2016)
    print(my_tesla.get_descriptive_name())
    my_tesla.battery.describe_battery()
    my_tesla.battery.get_range()
    print("i am just for a test")

    当我只想引用上边文件中汽车这个类时,发生了意向不到的情况。

    my_car.py
    
    from car import Car
    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()

    输出:

    2016 Tesla Model S
    This car has a 70-kWH battery.
    This car go approximately 240 miles on a full charge.
    i am just for a test
    2016 Audi A4
    This car has 23 miles on it

    从输出语句中可以发现,car.py整个文件都被执行了,而我在my_car.py中声明的是只引入Car这个类,具体原因还没有想清楚,等待解决。

    将car.py中的输出语句注释掉,就不会有多余的输出语句。

    why?

  • 相关阅读:
    性能参考指标
    Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
    Java Native Interface 编程系列一
    HTTP的报文与状态码
    [译]Android调整图像大小的一些方法
    Android多线程通信机制
    Android四大组件知识整理
    Java多态与反射
    23种设计模式的优点与缺点概况
    Android应用性能优化
  • 原文地址:https://www.cnblogs.com/lijitao/p/12189026.html
Copyright © 2011-2022 走看看