• 通过比较学python4:OOP 朱燚:


    python的OOP
    每个.net和java的程序员听到python是一门面向对象的语言后,都会问:那么怎么才能在python中创建一个类呢?下面就让我们通过与.net和java的对比学习一下python的OOP吧
    这是一个用python写的类以及用C#写的类,我们来看看他们的区别
    python实现:

    #鸭子类
    class Duck:
    #鸭子的姓名
     name='xiao duck'
    #鸭子的性别
     sex='boy'

    #初始化器
    def __init__(self,name,sex):
      self.name=name
      self.sex=sex

    #鸭子嘎嘎叫的方法
    def GaGa(self):    
    print 'GaGa'

    #创建对象并执行方法
    d=Duck('xiao duck','female')
    d.GaGa()
    print d.sex

    c#实现

    /**//// <summary>
    /// 鸭子类
    /// </summary>
    public class Duck
    ...{
    /**//// <summary>
    /// 鸭子的姓名
    /// </summary>
    public string name = "xiao duck";
    /**//// <summary>
    /// 鸭子的性别
    /// </summary>
    public string sex = "boy";

    /**//// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="name"></param>
    /// <param name="sex"></param>
    public Duck(string name,string sex)
    ...{
    this.name = name;
    this.sex = sex;
        }
    /**//// <summary>
    /// 鸭子嘎嘎叫的方法
    /// </summary>
    public void GaGa()
    ...{
            Console.Write("GaGa");
        }

    public static void Main(string[] argvs)
    ...{
            Duck d=new Duck("xiao duck","female")
            d.GaGa();
            Console.Write(d.sex);
        }
    }

    从上面这段代码,我们可以看到一些显著的不同

    • 首先python的field是没有保护级别的,也就是没有private,public之说,所有的类成员都是public,所有的类方法都是virtual[择自byteofpython p72]
    • python中的__init__函数类似于构造函数,是类初始化时自动调用的方法
    • 类方法的第一个参数其实必须是self
    • self其实就类比于C#中的this
    • 实例话对象不需要像.net和java中一样的new关键字
  • 相关阅读:
    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
    第十七篇:实例分析(1)--初探WDDM驱动学习笔记(八)
    Git权威指南学习笔记(二)Git暂存区
    C++11多线程教学II
    c++ 11 多线程教学(1)
    C++11 多线程 基础
    C++11下的线程池以及灵活的functional + bind + lamda
    intel线程库tbb的使用
    TBB入门
    TTB 基本
  • 原文地址:https://www.cnblogs.com/yizhu2000/p/802261.html
Copyright © 2020-2023  润新知