zoukankan      html  css  js  c++  java
  • 第十一章 类和对象[DDT书本学习 小甲鱼]【1】

    11.1 给大家介绍对象
    封装的概念:列表封装数据-----函数封装语句-----对象封装数据和代码
    描述对象:特征+行为

    11.2 对象=属性+方法
    将人写出代码,如下:
    class Ren:
    #属性
    color="黄色"
    legs=2
    weight=100
    #方法
    def pa(self):
    print("你看,我爬起来了")
    def 走(self):
    print("你看,我走起来了")
    def pao(self):
    print("你看,我跑起来了")
    def chi(self):
    print("你看,我开吃了")
    def shui(self):
    print("你看,我已经睡下了")
    #---以上只是定义好了模子(类),还没开始量产。必须将类实例化,才能引用实例 ----
    tw=Ren()
    #---已经通过类创建了对象,下面进行对象的操作
    print(tw.color)
    print(tw.pao())
    封装=信息隐蔽技术 属性-变量 方法-函数
    ==================列表排序====================
    代码如下
    list1=[2,1,4,9,5]
    list1.sort()
    print(list1)
    -------------
    [1,2,4,5,9]
    #如果想要列表末尾加个10
    list1.append(10)
    ----------------------
    [1,2,4,5,9,10]
    ======================== 列表即对象,提供了若干方法,方法的实现方法不知道=封装。
    面向对象的特征=封装+继承+多态

    11.3面向对象编程
    11.3.1 self是什么 类是建设图纸,对象是房子,self就是门牌号。
    通过例子来感受:
    class Ball:
    def setName(self,name):
    self.name=name
    def kick(self):
    print("我叫%s,嗷~谁踢我?!"%self.name)
    a=Ball()
    a.setName("捣蛋头")
    b=Ball()
    b.setName("飞机头")
    c=Ball()
    c.setName("火箭头")
    print(a.kick())
    print(b.kick())
    print(c.kick())
    -----------------------------------------------------
    我叫捣蛋头,嗷~谁踢我?!
    None
    我叫飞机头,嗷~谁踢我?!
    None
    我叫火箭头,嗷~谁踢我?!
    None
    ========================小结==================================
    将代码的print() 去掉即可 改成 return  
    是因为python函数使用return返回值,如果不用
    return, 而用print输出值,这个函数默认还有一个返回值为None 
    =================================================================
    11.3.2 你听说过Python的魔法方法么?构造函数__init__()
    作用:在由类创建对象的时候,自动调用该方法,对对象进行初始化设置。
    class Ball:
    def __init__(self,name):
    self.name=name
    def kick(self):
    return ("我是%s,来打我啊"% self.name)

    b=Ball("tan")
    print(b.kick())
    ----------------------------
    我是tan,来打我啊
    ============还可以进行初始设置,没传入也不报错 __init__(self,name="A"):

    11.3.3 公有和私有 Python里没有关键字进行修饰
    class Person:
    name="捣蛋头"
    p=Person()
    print(p.name)
    --------------
    捣蛋头
    ===================Python机制name mangling,变私有只需要加“__”两个下划线
    class Person:
    __name="捣蛋头"
    p=Person()
    print(p.name)
    -------------
    报错
    AttributeError: 'Person' object has no attribute 'name'
    那如何才能访问呢?
    class Person:
    __name = "捣蛋头"
    def getNanme(self):
    return self.__name
    p=Person()
    print(p.getNanme())
    ====================================本质上,只是改了变量名。代码如下
    class Person:
    __name="捣蛋头"
    p=Person()
    print(p._Person__name)
    ---------------------
    捣蛋头
    =====================================
    Python的私有机制其实是伪私有。

    11.4 继承
    鱼类,假如进行细分,有很多种类,能不能不用每次都去重新定义鱼类呢?大部分鱼
    的属性和方法都是相似的,如果有一种机制可以使得相似的东西自动传递,快捷多了。
    继承 可以实现。语法很简单:
    class 类名(被继承的类):
    ...
    被继承的类称为基类,父类或者超类;继承者称为子类,子类可以继承父类任何属性、方法
    举例如下:
    class Zuzong:
    def hello(self):
    print("正在调用父类方法。。。")
    class Haizi(Zuzong):
    pass
    p=Zuzong()
    p.hello() #父类实例对象调用方法
    s=Haizi()
    s.hello() #子类实例对象调用 继承父类的 方法
    ---------------------
    正在调用父类方法。。。
    正在调用父类方法。。。
    ====================================================
    如果子类定义与父类同名的方法或者属性,则会自动【覆盖】父类对应的方法或属性。
    class Fulei:
    def hello(self):
    print("say hello!")

    class Zilei(Fulei):
    def hello(self):
    print("八嘎亚路")

    z=Zilei()
    z.hello()
    -----------------
    八嘎亚路

    Daodantou:“不积跬步,无以至千里.”
  • 相关阅读:
    【BUUCTF】WEB SECRET FILE
    你是如何让函数返回IEnumerable<T>的
    对Closure的再思考
    旋转的女郎
    Tools in Visual Studio 2010
    解析命令行的正则表达式
    Closure中关于递归的一点补充
    对C++和C#中多态及类型转换的理解(二)
    对C#和C++0x中Lamda表达式的简略对比
    对C++和C#中多态及类型转换的理解(一)
  • 原文地址:https://www.cnblogs.com/daodantou/p/10453786.html
Copyright © 2011-2022 走看看