09_python_类


日期:2017-12-30 作者:秋的懵懂



# coding = utf-8

# ***********************************************************
# @file     python_09_class.py
# @brief    类
# @author   魏文应
# @date     2017-12-28
# ***********************************************************



# ---------------------------------------------------------
# 定义类
print('\n\n')
print('_______________________________________________')
print("定义类:")

class Dog():
    """定义dog类"""
    
    # self必须在前面,name和age是属性
    def __init__(self, name, age):
        """初始化name和age"""
        self.name = name
        self.age = age
        
    def sit(self):
        """命令小狗坐下"""
        print(self.name.title() + 'is now sitting.')
    
    def roll_over(self):
        """命令狗打滚"""
        print(self.name.title() + 'roll over!')
        
    def test(self):
        self.roll_over()
        

my_dog = Dog('willie', 6)
# 访问类的属性
print(my_dog.name.title())
print(my_dog.age)
# 调用方法
my_dog.sit()
my_dog.roll_over()
my_dog.test()


print('_______________________________________________')
# ---------------------------------------------------------




# ---------------------------------------------------------
# 修改类的属性
print('\n\n')
print('_______________________________________________')
print("修改类的属性:")

class Car():
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
        
    def get_discriptive_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):
        """设置英里数值"""
        self.odometer_reading = mileage
        
    def fill_gas_tank(self):
        """汽车油箱"""
        print("This car has a gas tank.")
    

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

# 直接修改属性
my_new_car.odometer_reading = 23
my_new_car.read_odometer()

# 通过方法修改属性
my_new_car.update_odometer(100)
my_new_car.read_odometer()

print('_______________________________________________')
# ---------------------------------------------------------



# ---------------------------------------------------------
# 定义一个关于电池的类
print('\n\n')
print('_______________________________________________')
print("定义一个关于电池的类:")

class Battery():
    """电池"""
    
    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.')

print('_______________________________________________')
# ---------------------------------------------------------




# ---------------------------------------------------------
# 继承父类
print('\n\n')
print('_______________________________________________')
print("继承父类:")

class ElectricCar(Car):
    """电动车类"""
    
    def __init__(self, make, model, year):
        """初始化父类属性"""
        super().__init__(make, model, year)
        self.battery_size = 70
        # 将实例用作属性
        self.battery = Battery()
        
    def describe_battery(self):
        """打印电瓶容量信息"""
        print('This car has a ' + 
              str(self.battery_size) + 
              '-kWh battery.')
    
    # 重写父类中的方法        
    def fill_gas_tank(self):
        """电动汽车没有油箱"""
        print("This car dosen't need a gas tank.")



my_tesla = ElectricCar('tesla', 'model s', 2016)
# 继承父类的方法
print(my_tesla.get_discriptive_name())
# 子类特有的方法
my_tesla.describe_battery()
# 重写父类中的方法  
my_tesla.fill_gas_tank()
# 将实例用作属性
my_tesla.battery.describe_battery()

print('_______________________________________________')
# ---------------------------------------------------------




# ---------------------------------------------------------
# import导入类
print('\n\n')
print('_______________________________________________')
print("import导入类:")

# 导入类,一般要放在文件开头位置,这里为了学习方便
from python_09_class_car import Car

my_new_car = Car('audi', 'a4', 2016)
my_new_car.read_odometer()

# 导入整个模块,建议这样使用
import python_09_class_car as car

my_new_car = car.Car('audi', 'a4', 2016)
my_new_car.read_odometer()


print('_______________________________________________')
# ---------------------------------------------------------




# ---------------------------------------------------------
# python标准库
print('\n\n')
print('_______________________________________________')
print("python标准库:")

# 使用模块collections中的OrderedDict类
# 这个类可以创建字典,同时元素有序排列
from collections import OrderedDict

favorite_language = OrderedDict()
favorite_language['jen'] = 'python'
favorite_language['sarah'] = 'c'
favorite_language['edward'] = 'ruby'
favorite_language['phil'] = 'python'

for name, language in favorite_language.items():
    print(name.title() + "'s favorite language is " +
          language.title() + '.')


print('_______________________________________________')
# ---------------------------------------------------------




子模块:


# coding = utf-8

# ***********************************************************
# @file     python_09_class_car.py
# @brief    类的模块文件
# @author   魏文应
# @date     2017-12-28
# ***********************************************************



class Car():
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
        
    def get_discriptive_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!')
        print('---TEST IMPORT---')
              
    def update_odometer(self, mileage):
        """设置英里数值"""
        self.odometer_reading = mileage
        
    def fill_gas_tank(self):
        """汽车油箱"""
        print("This car has a gas tank.")


class Battery():
    """电池"""
    
    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.')


class ElectricCar(Car):
    """电动车类"""
    
    def __init__(self, make, model, year):
        """初始化父类属性"""
        super().__init__(make, model, year)
        self.battery_size = 70
        # 将实例用作属性
        self.battery = Battery()
        
    def describe_battery(self):
        """打印电瓶容量信息"""
        print('This car has a ' + 
              str(self.battery_size) + 
              '-kWh battery.')
    
    # 重写父类中的方法        
    def fill_gas_tank(self):
        """电动汽车没有油箱"""
        print("This car dosen't need a gas tank.")



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,133评论 25 707
  • 当你的才华还撑不起你的野心的时候,你就应该静下心来学习; 当你的能力还驾驭不了你的目标时,就应该沉下心来,历练。 ...
    兰心之阅读 508评论 10 14
  • 生活中,你是不是一边教孩子分享,可是当孩子给你分享的时候,你又说不要,你吃吧。99%的父母长辈是不是都躺枪...
    未央之雨阅读 541评论 0 0
  • 老屋未修心绪愁, 新居何日把砖投? 两鬓如霜人已老, 不负重担建新楼。
    平山冷燕_725a阅读 217评论 6 5
  • 上了一夜班的我加上忙了一天的我,回到家,我看了看镜子里的自己,面色蜡黄,明显的一个黄苹果脸,双眼已有两个大大的黑轮...
    沐之曦阅读 187评论 0 0