zoukankan      html  css  js  c++  java
  • Python----面向对象---鸭子类型

    Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

    python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象

    也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。

    例如:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法

     1 class Disk:
     2     def read(self):
     3         print('disk read')
     4 
     5     def write(self):
     6         print('disk write')
     7 
     8 
     9 class Text:
    10     def read(self):
    11         print('Text read')
    12 
    13     def write(self):
    14         print('Text write')
    15 
    16 
    17 disk = Disk()
    18 text = Text()
    19 
    20 disk.read()
    21 disk.write()
    22 
    23 text.read()
    24 text.write()

    结果为:

    disk read
    disk write
    Text read
    Text write

    还有一种序列类型:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系

     1 s = str('hello')
     2 l = list([1, 2, 3])
     3 t = tuple(('a', 'b', 'c'))
     4 
     5 print(l.__len__())
     6 print(s.__len__())
     7 print(t.__len__())
     8 
     9 
    10 def len(obj):
    11     return obj.__len__()
    12 
    13 
    14 print(len(l))
    15 print(len(s))
    16 print(len(t))
    17 
    18 结果为:
    19 3
    20 5
    21 3
    22 3
    23 5
    24 3

    实现了可以在不考虑对象类型的情况下使用len方法

  • 相关阅读:
    HTML页引用CSS
    C#反射
    Marshal.SecureStringToBSTR
    SQL语句创建表和数据库
    抽象类和抽象方法
    3 Sum Closest
    Chapter 2: Binary Search & Sorted Array
    Spiral Matrix
    Pascal's Triangle
    Plus One
  • 原文地址:https://www.cnblogs.com/xudachen/p/8608917.html
Copyright © 2011-2022 走看看