zoukankan      html  css  js  c++  java
  • Python学习第十五篇——类继承和类实例化

           学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等)老虎属于猫科动物,因此我们可以用猫科动物的类描述来描述老虎。但除了这些共性之外,老虎自身也具有一定的差异性,这就引出了继承这一概念:

          即我们在描述老虎这一对象时,可以保留猫科动物这个类的属性,同时为老虎描述新的 属性,当然,我们也是创建老虎类来描述老虎(毕竟还有东北虎,华南虎之分)。下面请见一段代码:

     1 class  Car():
     2     def __init__(self,make,model,year):
     3         self.make = make
     4         self.model  = model
     5         self.year = year
     6         self.odometer_reading = 0
     7         
     8     def get_descriptive_name(self):
     9         long_name = str(self.year)+' '+self.make+' '+self.model
    10         return long_name.title()
    11             
    12     def red_odometer(self):
    13         print("This car has "+str(self.odometer_reading)+" miles on it.")
    14         
    15     def updata_odometer(self,mileage):
    16         if migeage >= self.odometer_reading:
    17             self_odometer_reading = mileage
    18         else:
    19             print("You can't roll back an odometer!")
    20         
    21     def increment_odometer(self,miles):
    22         self.odometer_reading = self.odometer_reading+miles
    23 
    24 class Battery():
    25     def __init__(self,battery_size=70):
    26         self.battery_size = battery_size
    27         
    28     def describe_battery(self):
    29         print("This car has a "+str(self.battery_size)+"-kwh battery.")    
    30     
    31         
    32 class ElectricCar(Car):
    33     def __init__(self,make,model,year):
    34         super().__init__(make,model,year)
    35         self.battery = Battery()
    36         
    37         
    38 my_tesla = ElectricCar('tesla','models',2016)
    39 print(my_tesla.get_descriptive_name())
    40 my_tesla.battery.describe_battery()
    41             

    代码中先创建了一个类,用来描述Car,但是我们要描述特斯拉这种电动汽车,可以继承Car的属性,同时创建自身的一些属性。

    2 随着属性元素越来越多,类中方法的描述也越来越多,因此可以将一些属性独立出来,也封装成一个类,只不过在使用的时候,将这些小类实例化成属性。比如上述代码中对battery的描述

    这里再次强调:用类描述事物的方法:1 初始化类的属性  2:用方法(def)来描述这些属性

  • 相关阅读:
    Begin Example with Override Encoded SOAP XML Serialization
    State Machine Terminology
    How to: Specify an Alternate Element Name for an XML Stream
    How to: Publish Metadata for a WCF Service.(What is the Metadata Exchange Endpoint purpose.)
    Beginning Guide With Controlling XML Serialization Using Attributes(XmlSerializaiton of Array)
    Workflow 4.0 Hosting Extensions
    What can we do in the CacheMetaData Method of Activity
    How and Why to use the System.servicemodel.MessageParameterAttribute in WCF
    How to: Begin Sample with Serialization and Deserialization an Object
    A Test WCF Service without anything of config.
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9491709.html
Copyright © 2011-2022 走看看