首页 > 其他 > 详细

【PY从0到1】

时间:2021-02-04 20:48:44      阅读:36      评论:0      收藏:0      [点我收藏+]
# 9 第九节 类

# 好,我猜读者的第一个灵魂拷问就是:类是什么?
# 顾名思义,类就是具有相同特征的东西的集合。
# 比如手机,他有很多种类,但是都可以打电话,听音乐,玩游戏...
# 那我们就把能实现这些功能的电子产品统一称为手机。
# 这就是一个类。

# 第二个灵魂拷问,我们为什么要创建类这个概念?
# 当我们告诉Python这个东西属于我们定义好的一个类时,
# Python就会自动将所有相关的属性赋予这个东西。
# 这样可以极大的简化我们的代码。


# 1> 创建一个简单的类
# 在命名上,首字母需要大写。
# 后面的括号就说明我们是从一个空白类开始编写的。
class Dog():
    ‘‘‘简单的小狗类‘‘‘
    def __init__(self,name,age):  # 这里只用写个性的特征。
        ‘‘‘在这里写下小狗拥有的东西‘‘‘
        self.name = name
        self.age = age
    
    def sit(self):
        ‘‘‘我们可以命令小狗坐下‘‘‘
        print(self.name.title() + 现在已经坐下啦!)
        
    def roll_over(self):
        ‘‘‘我们命令小狗打滚‘‘‘
        print(self.name.title() + 现在正在打滚!)

# 上面就包含了类的基本结构。
# init是初始化部分,也就是说所有的小狗都有要名字和年龄。
# sit和roll_over是我们给予小狗的动作。
# 下面我们看下怎么用。

my_dog = Dog(huanhuan,5)
print(我小狗的名字是 + my_dog.name.title() + . )
print(我的小狗今年 + str(my_dog.age) +岁了。 )
my_dog.sit()
my_dog.roll_over()
# 输出结果如下:
# 我小狗的名字是Huanhuan. 
# 我的小狗今年5岁了。 
# Huanhuan现在已经坐下啦!
# Huanhuan现在正在打滚!


# 2> 一个更具体的例子

class Car():
    ‘‘‘小汽车的类‘‘‘
    
    def __init__(self,make,model,year):
        ‘‘‘初始化小汽车的属性‘‘‘
        self.make = make
        self.model = model
        self.year = year
        self.odomter_reading = 0 # 设置一个有默认值的参数。
        
    def get_descriptive_name(self):
        ‘‘‘关于小汽车的介绍‘‘‘
        long_name =str(品牌: + self.make +
                    \n型号: + self.model +
                    \n生产年份: + str(self.year)
                    )
        return long_name
    
    def read_odometer(self):
        ‘‘‘读取汽车里程数‘‘‘
        print(这台小汽车开了 + 
              str(self.odomter_reading) + 
              公里。)
        
    def increment_odometer(self,mileage):
        ‘‘‘
        更新里程数据,这里要填写里程的增加值。
        并设置防止恶意回拨机制。
        ‘‘‘
        if mileage >= 0:
            self.odomter_reading += mileage
        else:
            print(里程数不能为负,请重新输入!)
            

my_car = Car(大众,朗逸,2016) # 传入一辆车的信息。

print(my_car.get_descriptive_name()) # 打印汽车基本信息。
# 品牌:大众
# 型号:朗逸
# 生产年份:2016
my_car.read_odometer() # 打印里程信息。
# 这台小汽车开了0公里。
my_car.increment_odometer(23) # 小汽车的历程增加了23公里。
my_car.read_odometer() # 再次尝试打印。
# 这台小汽车开了23公里。


# 3> 子类
# 这是大类的一个细分类。子类包含一些特有的特征。
# 下面我们就建立一个汽车的子类,电动汽车。

class ElectricCar(Car): # 括号里注明父类
    ‘‘‘电动车特有的特征‘‘‘
    
    def __init__(self,make,model,year):
        ‘‘‘继承父类的基本信息,并添加特有信息‘‘‘
        super().__init__(make,model,year)    
        self.battery_size = 70
        
    def describe_battery(self):
        ‘‘‘打印电瓶信息‘‘‘
        print(电车的电池容量为: + 
              str(self.battery_size) + 
              千瓦时。)
        

my_tesla = ElectricCar(特斯拉,model_Y,2021)  
print(my_tesla.get_descriptive_name()) # 打印电动车基本信息。
# 品牌:特斯拉
# 型号:model_Y
# 生产年份:2021
my_tesla.describe_battery() #打印电动车特有属性。
# 电车的电池容量为:70千瓦时。

# 4> 使类变的更简洁的方法
# 当我们发现描述电动车电池的特征越来越多的时候,为了使类看的更加简洁。
# 我们可以把电池单独建立类,再把电池作为电动车的一个初始属性。

class Battery():
    ‘‘‘关于电池的信息‘‘‘
    
    def __init__(self,battery_size=70):
        self.battery_size = battery_size
    
    def describe_battery(self):
        ‘‘‘打印电瓶信息‘‘‘
        print(电车的电池容量为: + 
              str(self.battery_size) + 
              千瓦时。)
    
    
class ElectricCar1(Car): # 括号里注明父类
    ‘‘‘电动车特有的特征‘‘‘
    
    def __init__(self,make,model,year):
        ‘‘‘继承父类的基本信息,并添加特有信息‘‘‘
        super().__init__(make,model,year)    
        self.battery = Battery()

my_tesla2 = ElectricCar1(特斯拉,model_X,2020) 
my_tesla2.battery.describe_battery() 
# 输出与之前一样:电车的电池容量为:70千瓦时。

#最后说一下 我们常用的导入库的方法是:
# import (所要导入库的文件名) as (简写,一般要记住通用写法)
# 如本节例子。假设我们这个文件名叫car。
# import car as ca
# 如果想调用库里的类,以及制定函数,就可以这么做。
# dd = ca.Car(‘xxx‘,‘xx‘,2020)
# dd.read_odometer()

# 到目前为止,我们python的级初阶课程就全部介绍完毕了。

 

【PY从0到1】

原文:https://www.cnblogs.com/HTY-AIpy/p/14374163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!