zoukankan      html  css  js  c++  java
  • 笨方法学Python——习题40

    之前例子讲过关于字典、列表、字符串、元组,按书中所述,其实这些已经足够写一些代码,但Python属于面向对象的编程语言,本节所讲的类,是必须要掌握的,虽然现在有些懵逼

     1 class Song(object):
     2 
     3     def __init__(self, lyrics):
     4         self.lyrics = lyrics
     5 
     6     def sing_me_a_song(self):
     7         for line in self.lyrics:
     8             print line
     9 
    10 happy_bday = Song(["Happy birthday to you",
    11                     "I don't want to get sued",
    12                     "So I'll stop right there"])
    13 
    14 bulls_on_parade = Song(["They rally around the family",
    15                         "With pockets full of shells"])
    16 
    17 happy_bday.sing_me_a_song()
    18 
    19 bulls_on_parade.sing_me_a_song()
     1 # -*- coding:utf-8 -*-
     2 class Ren:
     3 # 有一个(object),这是一个继承,就是继承系统的object这个类,拥有这个类的所有属性和方法,如果不需要,就不用写,写成 Ren 或者 Ren() 也可以
     4 
     5     name = ""
     6     high = "一人高"
     7     wight = "一人重"
     8     __money = "我有很多钱"
     9 # 这几个是局部属性,仅限于外部调用使用,如果通过类里的变量调用是无效的
    10 # —__money 为私有属于,不能被类以外的函数调用,但如果用类里其他函数调用之后,在外部打印函数,就可以显示,这样能保证更好的封装和私密性
    11     def run(self):
    12         print "跑步"
    13         print self.name
    14         print self.__money
    15 # 如果必须加self才能从内部调用属性,否则调用的是全局,也就是外部的属性,需要在外部重新定义
    16 zhangsan = Ren() #这就是实例化的对象 
    17 
    18 # print zhangsan # <__main__.Ren instance at 0x1099edbd8>
    19 # 意指张三为这个类别当中的一个实例,不能直接打印
    20 
    21 # if __name__ == '__main__':
    22 # if __name__ == __main__    实例化对象
    23 # 这句话的意思就是说如果上面的类被调用,下面的函数才会执行,而如果说整个函数作为模块被调用,则不执行!!!这里暂时没搞懂
    24 
    25 print zhangsan.name 
    26 # 这样写就是把人这个类的整体的名称赋值给了张三,那最后的结果就是张三的名称叫“人”,肯定是不对的,所以需要通过对 name来进行重新赋值,在下方
    27 
    28 zhangsan.name = "张三" # 重新赋值
    29 print zhangsan.name 
    30 # 这个时候得到的就是张三这个人的单独名称,对于人这个类并没有影响
    31 
    32 # print zhangsan.money # Ren instance has no attribute 'money
    33 # 由于人这个类中没有money的属性,所以打印无效果
    34 zhangsan.money = "一百万"
    35 print zhangsan.money 
    36 # print zhangsan.__money
    37 # 像这里,由于—__money是私有属性,被类中的run函数调用后,在外部打印run函数就可以,但在这里直接调用,就不可以
    38 
    39 # print zhangsan.__money # 私有属性,外部无法调用
    40 # 对象是从类别中实例化出来的,所以会具有类的一些特性,但张三在这里是单独的个体,人的类不可能都有钱,对象与类不同,所以也可以单独赋值
    41 
    42 zhangsan.run()
    43 
    44 print Ren.__dict__ # 这个就是内置属性的调用了

    描述及方法,类似球的形状,球的玩法

     

    比如汽车,如果用面向对象的方式解释,

    我想你带我去哪哪,直接开车去就可以了

    而如果用面向过程的编程方法,就需要把打开车门、插入车钥匙,打火等等全部描述一遍

    这里使用面向对象的方式把对于“汽车”的描述及方法封装为类,直接使用即可

     

    比如你定义了四个函数,都是针对于数据库的操作一类功能,就可以把他们定义为一个类,最主要的作用,就是封装代码

     

     

     

    面向对向的三大特色:封装、继承、多态

    1,用class定义类

    2,类名首字母大写,如果类名为两个词组,那这两个连续的词组首字母均需要大写

    3,一般函数定义都是定义单独或者说简单功能的,比如定义人这个类,人会说话会走路,长的高、瘦,这些对于人类的描述以及人能够做的行为,可以定义为一个类,把需要用到的变量和函数放到一起的操作,叫封装

    4,self 行参,在类中定义函数必须有这个,负责传递当前类中的内置的一些属性及方法,实际上就是接收自己这个类中的参数,但其实不需要给他参数

    5,从一个类别当中生成对象的过程叫做实例化,当一个对象创建好后,

     

    有三个特性:对象的句柄(俗称变量的名称)、属性(成员变量)和方法(成员函数)

    instance(实例),类别当中的一个实例,也就是所说的对象

     

    6,类写义时会有一个(object),这是一个继承,就是继续之前系统的object这个类,如果不继续 ,就不需要写,看作是一个单独的 Ren 的类即可

     

    7,类的属性分公有属性、私有属性、内置属性,

    公有属性就在可以被类外部访问,也可以被内部调用的属性

    私有属性样式为 __x 可以被内部调用,外部无法直接调用。

    内置属性样式为 __x__ 就是系统内的

  • 相关阅读:
    杭电 2546 饭卡 (01背包问题)
    杭电2602 Bone Collector
    01背包问题的详细概述
    杭电1003 最大子串(第二次AC) 当作DP的训练吧
    杭电1087 Super Jumping! Jumping! Jumping!(初见DP)
    Virtualenv虚拟环境的创建、激活、及退出
    修改maven本地仓库路径
    PPT如何去除背景音乐(史上最全方案)
    NVIDIA显卡驱动安装步骤
    Python之NumPy(axis=0 与axis=1)区分
  • 原文地址:https://www.cnblogs.com/hejianlong/p/7895502.html
Copyright © 2011-2022 走看看