• Python中类的继承代码实例


    Python中类的继承代码实例

    这篇文章主要介绍了Python中类的继承代码实例,本文直接给出代码及运行效果,需要的朋友可以参考下

    相对于C 的继承编写,Python更简洁,而且效率也是很高的,下面编写一个简单Python的继承例子。

    代码如下:
    #!/usr/bin/python   
    #filename: pyclass.py   
      
    class Member:   
            def __init__(self, name, age):   
                    self.name = name   
                    self.age = age   
                    print 'Member init:%s' % self.name   
            def tell(self):   
                    print 'Name:%s,Age:%d' % (self.name, self.age),   
      
    class Student(Member):   
            def __init__(self, name, age, marks):   
                    Member.__init__(self, name, age)   
                    self.marks = marks   
                    print 'Student init:%s' % self.name   
            def tell(self):   
                    Member.tell(self)   
                    print 'Marks:%d' % self.marks   
      
    class Teacher(Member):   
            def __init__(self, name, age, salary):   
                    Member.__init__(self, name, age)   
                    self.salary = salary   
                    print 'Teacher init:%s' % self.name   
            def tell(self):   
                    Member.tell(self)   
                    print 'Salary:%d' % self.salary   
      
    s = Student('Tom', 20, 80)   
    t = Teacher('Mrs.Huang', 30, 50000)   
      
    members = [s, t]   
    for mem in members:   
            mem.tell()  

    运行效果:

    复制代码代码如下:

    [root@localhost hhl]# python pyclass.py    
    Member init:Tom   
    Student init:Tom   
    Member init:Mrs.Huang   
    Teacher init:Mrs.Huang   
    Name:Tom,Age:20 Marks:80   
    Name:Mrs.Huang,Age:30 Salary:50000  

    我们同样编写同样效果的C 例子:

    代码如下:
    //filename: class.cpp   
    #include    
    #include    
    using namespace std;   
      
    class Member   
      
    public:   
        Member(char *n, int a);   
        void tell();   
    private:   
        char name[10];   
        int age;   
    };   
      
    Member::Member(char *n, int a)   
      
        memcpy(name, n, sizeof(name));   
        age = a;   
        cout<<"Member init:"<<name<<endl;   
      
      
    void Member::tell()   
      
        cout<<"Name:"<<name<<","<<"Age:"<<age<<",";   
      
      
    class Student:public Member   
      
    public:   
        Student(char *n, int a, int m);   
        void tell_s();   
    private:   
        int marks;   
    };   
      
    Student::Student(char *n, int a, int m):Member(n, a)   
      
        marks = m;   
        cout<<"Student init:"<<n<<endl;   
      
      
    void Student::tell_s()   
      
        Member::tell();   
        cout<<"Marks:"<<marks<<endl;   
      
      
    class Teacher:public Member   
      
    public:   
        Teacher(char *n, int a, int s);   
        void tell_t();   
    private:   
        int salary;   
    };   
      
    Teacher::Teacher(char *n, int a, int s):Member(n, a)   
      
        salary = s;   
        cout<<"Teacher init:"<<n<<endl;   
      
      
    void Teacher::tell_t()   
      
        Member::tell();   
        cout<<"Salary:"<<salary<<endl;   
      
      
    int main(void)   
      
        Student s("Tom", 20, 80);   
        Teacher t("Mrs.Huang", 30, 50000);   
           
        s.tell_s();   
        t.tell_t();   
      
        return 0;   
     

    运行效果:

    代码如下:
    [root@localhost hhl]# ./class    
    Member init:Tom   
    Student init:Tom   
    Member init:Mrs.Huang   
    Teacher init:Mrs.Huang   
    Name:Tom,Age:20,Marks:80   
    Name:Mrs.Huang,Age:30,Salary:50000  

    这两者的运行效果是一样的,但是python更简洁些。。。


  • 相关阅读:
    图数据库-Neo4j使用
    [原创]networkx 画中文节点
    python networkx:绘制网络图
    Python二维数组,坑苦了
    xgboost
    python 机器学习
    计算机网络知识
    前端优化不完全指南(转)
    FlashFXP 4.3.1 注册码
    你真的会使用Chrome开发者工具吗?
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586389.html
Copyright © 2020-2023  润新知