歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 應用Python寫的一個簡單的Class代碼生成器

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

日期:2017/3/1 10:05:23   编辑:Linux編程

平時苦於寫一下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