歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

應用Python寫的一個簡單的Class代碼生成器

平時苦於寫一下C++類或數據結構時時,每個類都需要四五個與類相關的構造、析構函數。每次重復的寫些類名和變量名,費時費力。若將這些函數省略,代碼風格不好,又不安全。

經常見一些代碼生成工具,只需定義類名,變量,函數,就能生成比較完善的代碼。格式統一,漂亮且安全。不過這些工具都與自己的框架或編譯系統相關,通用性不是很好。

最近想學習下python的應用,就嘗試自己寫一個簡單的Class代碼生成器。按照一般的思路:設計漂亮易用的界面,生成類型定義的xml或其他格式的數據文件,然後再翻譯成代碼。這個工作量和設計復雜程序對我這個python新手短時間內是不可能的。按照2/8原則,設計一個最簡單易用的界面,盡可能的完成一些重復性的勞動。

期望的 工具使用方式:

只需在一個文本文件,如declare.txt中,第一行寫入類名,然後以下每行寫入 類型名和變量名即可。

生成的代碼,包括類的聲明和各種構造和析構函數。

如:declare.txt文件中

Test 

int a

float b

string c

需要生成的目標代碼:

class Test
{
    Test();
    Test(int _a, float _b, const string &_c);
    Test(const Test &rhs);
    Test& operator = (const Test &rhs);
    ~Test();

public: // private:
    int a;
    float b;
    string c;
};


Test::Test()
: a()
, b()
, c()
{
}

Test::Test(int _a, float _b, const string &_c)
: a(_a)
, b(_b)
, c(_c)
{
}

Test::Test(const Test &rhs)
{
 *this = rhs;
}

Test& Test::operator = (const Test &rhs)
{
 if (&rhs != this)
 {
         a = rhs.a;
         b = rhs.b;
         c = rhs.c;
 }

 return *this;
}

Test::~Test()
{
}

Copyright © Linux教程網 All Rights Reserved