zoukankan      html  css  js  c++  java
  • python学习(七) 更加抽象

    python是面向对象的语言。

    7.1 对象的魔力

      7.1.1 多态

    不管是字符串还是列表,count()函数都可以正常工作。

    >>> ['ab','b','c'].count('c')
    1
    >>> 'abc'.count('c')
    1

    下面的加号 + 运算符对于整数和列表都可以起作用,而且行为不同:

    >>> 1 +2
    3
    >>> 'fsafda' + 'fsdfs'
    'fsafdafsdfs'

      7.1.2 封装

      7.1.3 继承

    7.2 类和类型

      7.2.1 类到底是什么

      7.2.2 创建自己的类

    self:类自动的将自己作为第一个参数传递进去,代表对象本身。

    self参数事实上正是方法和函数的区别。

    >>> class Person:
        def setName(self, name):
            self.name = name
        def getName(self):
            return self.name
        def greet(self):
            print('Hello world ! I am %s' % self.name)
    
            
    >>> foo = Person()
    >>> bar = Person()
    >>> foo.setName("jordan")
    >>> bar.setName('kobe')
    >>> foo.greet()
    Hello world ! I am jordan
    >>> bar.greet()
    Hello world ! I am kobe

      7.2.3 特性、函数和方法

    默认情况下,程序可以从外部访问一个对象的特性。

    python并不直接支持私有方法。但是有一些小技巧可达到私有特性的效果。

    为了让方法或者变量变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可:

    幕后是这么做的:以双下划线开始的名字都被翻译成前面加上单下划线和类名的形式,所以还是可以在类的外部调用这些私有方法和变量(这样做不好)。

    如果不需要使用这种方法但是又想让其他对象不要访问内部数据,那么可以使用单下划线。这只是个习惯,但有实际效果。例如,前面有下划线的名字都不会被带星号的import语句(from module import *)导入。

      7.2.4 类的命名空间

    >>> def foo(x): return x*x
    >>> foo(5)
    25
    
    >>> foo2 = lambda x: x*x
    >>> foo2(5)
    25 

      >>> class C: 
               print('class C being defined')                // 类内部的函数也可以不用def定义,可以直接写执行语句

        class C being defined

    >>> class MemberCounter:
        members = 0               //类的作用域中定义了供所有成员访问的变量,用来计算类的成员数量。
        def init(self):
            MemberCounter.members += 1
    
            
    >>> m1 = MemberCounter()
    >>> m1.init()
    >>> MemberCounter.members
    1
    >>> m2 = MemberCounter()
    >>> m2.init()
    >>> MemberCounter.members
    2

      7.2.5 指定超类

      class SPAMFilter(Filter)   // 将其他类名写在class语句后的圆括号内可以指定超类。

      7.2.6 检查继承

            issubclass函数可以检查一个类是否是另外一个类的子类

            issubclass(SPAMFilter, Filter) : 判断SPAMFilter是否是Filter的子类。

      SPAMFilter.__bases__ : 得到已知类的基类。

      isinstance(s, SPAMFilter)

      7.2.7 多个超类

      class Talkingcalculator(Calculator, Talker)    //   python允许继承自多个基类,多重继承

      多重继承的两个类如果有方法同名,那么先继承的类的方法会覆盖后继承的类的方法。

      7.2.8 接口和内省

    7.3 一些关于面向对象设计的思考

  • 相关阅读:
    CSS基本语法(慕课网学习笔记)
    Sublime Text3 显示左侧的目录树
    设置Sublime插件快捷键--实现CSS颜色选取
    HTML基本语法(慕课网学习笔记)
    cdoj1324卿学姐与公主
    模板-求组合数
    线段树--数据结构专题学习
    最短路径算法
    杭电1874畅通工程续 -最短路径
    杭电1027Ignatius and the Princess II模拟
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7266571.html
Copyright © 2011-2022 走看看