• python-类


      1 ##------------------------类--------------------
      2 '''
      3 在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。
      4 编写类时,你定义一大类对象都有的通用行为。基于类创建 对象时,每个对象都自动具备
      5 这种通用行为,然后可根据需要赋予每个对象独特的个性。
      6 
      7 根据类来创建对象被称为 实例化,这让你能够使用类的实例。你将指定可在实例中存储什
      8 么信息,定义可对这些实例执行哪些操作。你还将编写一些类来扩展既有类的功能,让相似
      9 的类能够高效地共享代码。你将把自己编写的类存储在模块中,并在自己的程序文件中导入
     10 其他程序员编写的类。
     11 '''
     12 ##总而言之,类像是一个模板,实例化就是根据模板做好的成品
     13 ##创建和使用类
     14 
     15 class Dog():
     16     def __init__(self,name,age):
     17         '''初始化属性name和age'''
     18         self.name=name
     19         self.age=age
     20     
     21     def sit(self):
     22         '''模拟小狗被命令时蹲下'''
     23         print(str(self.name.title())+'蹲下!')
     24         
     25     def roll_over(self):
     26         '''模拟小狗被命令时打滚'''
     27         print(str(self.name.title())+'打滚!')
     28       
     29 ##实例化一个对象my_dog      
     30 my_dog=Dog('阿尔法',5)
     31 ##访问属性
     32 print('我的小狗的名字叫做:'+my_dog.name.title())
     33 print(my_dog.name.title()+'今年已经有'+str(my_dog.age)+'岁了!')
     34 ##调用类中的方法(函数)
     35 my_dog.sit()
     36 my_dog.roll_over()
     37 ##创建多个实例:
     38 #可按需求根据类创建任意数量的实例。
     39 your_dog=Dog('贝塔',3)
     40 your_dog.roll_over()
     41 
     42 
     43 
     44 --------------------------------------------------------------------
     45 
     46 class Car():
     47     '''一次模拟汽车的简单尝试'''
     48     def __init__(self,make,model,year,color):
     49         '''初始化汽车的属性'''
     50         self.make=make
     51         self.model=model
     52         self.year=year
     53         self.color=color
     54         self.odometer_reading=10##给定的默认值
     55     def get_descriptive_name(self):
     56         '''返回整洁的描述信息'''
     57         long_name=str(self.year)+',由'+self.make+'公司'+'生产的'+self.model+self.color+'型号车的性能相当出色!'
     58         return long_name.title()
     59     def read_odometer(self):
     60         '''打印汽车的里程数'''
     61         print('这辆'+str(self.model)+'车已经行驶了'+str(self.odometer_reading)+'公里!')
     62     
     63     #属性值的更新方法2:
     64     def update_odomenter(self,mileage):
     65         #扩展:禁止里程数回调
     66         if mileage>=self.odometer_reading:
     67             self.odometer_reading=mileage
     68         else:
     69             print('操作非法,拒绝!')
     70     
     71     def increment_odometer(self,miles):
     72         '''将里程表读数增加指定的量'''
     73         self.odometer_reading+=miles
     74 my_new_car=Car('GWC','悍马H2',2008,'银黑色')
     75 print(my_new_car.get_descriptive_name())
     76 print(str(my_new_car.read_odometer()))
     77 ##修改属性的值:
     78     #1.直接修改属性的值
     79 my_new_car.odometer_reading=200##通过实例化对象直接访问并修改
     80 my_new_car.read_odometer()
     81 
     82     #2.通过方法修改属性的值
     83 my_new_car.update_odomenter(300)##更新属性odometer_reading的值
     84 my_new_car.read_odometer() 
     85 #3.通过方法对属性的值进行递增
     86 '''
     87     有时候需要将属性值递增特定的量,而不是将其设置为全新的值。假设我们购买了一辆二手
     88     车,且从购买到登记期间增加了100英里的里程,下面的方法让我们能够传递这个增量,并相
     89     应地增加里程表读数:
     90 '''
     91 my_new_car=Car('上海一汽','大众',2017,'银色')
     92 print(my_new_car.get_descriptive_name())
     93 my_new_car.update_odomenter(2000)
     94 my_new_car.read_odometer()
     95 
     96 my_new_car.increment_odometer(100)
     97 my_new_car.read_odometer()
     98  
     99  
    100 ##-----------继承---------------
    101 class ElectricCar(Car):
    102     '''电动汽车'''
    103     def __init__(self,make,model,year,color):
    104         '''初始化父类的属性'''
    105         super().__init__(make,model,year,color)
    106     
    107     
    108     
    109 my_tesla=ElectricCar('雅迪','雅迪电动车','2019','红色')
    110 print(my_tesla.get_descriptive_name())
    111 my_tesla.read_odometer()##//通过继承来的方法访问父类创建的默认值
    112 '''
    113 pythin2.7继承方法
    114 
    115 class Car(object):
    116     def __init__(self, make, model, year):
    117     -- snip --
    118     
    119 class ElectricCar(Car):
    120     def __init__(self, make, model, year):
    121         super(ElectricCar, self).__init__(make, model, year)
    122 '''
    123 ##给子类定义属性和方法
    124 class Bus(Car):
    125     '''公交汽车'''
    126     def __init__(self,make,model,year,color):
    127         '''初始化父类的属性'''
    128         super().__init__(make,model,year,color)
    129         self.battery_size=100##电瓶容量
    130         
    131     def display_battery_size(self):
    132         print('这辆'+str(self.model)+'的容量是'+str(self.battery_size))
    133     
    134     #重写父类的方法
    135     def read_odometer(self):
    136         print('此公交汽车已经行驶:'+str(self.odometer_reading)+'公里!')
    137 my_bus=Bus('天津一汽','2019-公交车','2019','墨绿色')
    138 bus_massage=my_bus.get_descriptive_name()
    139 print(bus_massage)
    140 my_bus.display_battery_size()
    141 ##调用重写父类的方法
    142 my_bus.odometer_reading+=10
    143 my_bus.read_odometer()
    144 
    145 
    146 ##将实例化的对象用作属性
    147 '''
    148 使用代码模拟实物时,你可能会发现自己给类添加的细节越来越多:属性和方法清单以及文
    149 件都越来越长。在这种情况下,可能需要将类的一部分作为一个独立的类提取出来。你可以将大
    150 型类拆分成多个协同工作的小类。
    151 '''
    152 class bearing():
    153     def __init__(self,name='30mm轴承',materials='碳性钢'):
    154         '''初始化轴承的属性'''
    155         self.name=name
    156         self.materials=materials
    157     
    158     def read_property(self):
    159         '''返回整洁的描述信息'''
    160         print(str(self.name)+'的材质是'+str(self.materials)+'打造的')
    161 
    162 class private_car(Car):
    163     '''私家车的属性'''
    164     def __init__(self,make,model,year,color):
    165         super().__init__(make,model,year,color)
    166         self.number_of_passengers=4##可乘坐人数
    167         self.Bearing=bearing()
    168     def print_pricate_car_massage(self):
    169         print('属性:'+'
    	厂家:'+str(self.make)+'
    	名称:'+str(self.model)+'
    	生产日期:'+str(self.year)+'
    	颜色:'+str(self.color))
    170         print('载客量为:'+str(self.number_of_passengers))
    171 
    172 my_private_car=private_car('上海一汽','宝马',2020,'蓝色')
    173 my_private_car.print_pricate_car_massage() 
    174 my_private_car.bearing.read_property() 
    175 
    176 ##导入单个类(假设统计目录下的hello.py文件中有个hello_friend的类)
    177 from hello import hello_friend
    178 ##在一个模块中存储多个类
    179 '''虽然同一个模块中的类之间应存在某种相关性,但可根据需要在一个模块中存储任意数量的类。'''
    180 ##从一个模块中导入多个类(类与类之间用逗号隔开)  
    181 from hello import hello_friend,hello_teacher
    182 
    183 ##导入整个模块
    184 '''还可以导入整个模块,再使用句点表示法访问需要的类。这种导入方法很简单,代码也易
    185 于阅读。由于创建类实例的代码都包含模块名,因此不会与当前文件使用的任何名称发生冲突。'''
    186 import hello
    187 
    188 
    189 ##导入模块中的所有类,要导入模块中的每个类,可使用下面的语法:
    190 from  module_name import *
  • 相关阅读:
    单例模式的五种实现模式
    JAVA基础语法
    买卖股票的最佳时机 III
    leetcode 正则表达式 (动态规划)
    leetcode LRU缓存机制(list+unordered_map)详细解析
    leetcode 下一个排列(C++,STL源码解析)
    leetcode 编辑距离(动态规划)
    leetcode 字典序排数
    leetcode 字典序第K小数字
    leetcode 有效的括号(栈模拟)
  • 原文地址:https://www.cnblogs.com/best-mingge/p/12878303.html
Copyright © 2020-2023  润新知