在做WPFMVVM中经常会遇到一些Model、ViewModel的属性添加添加私有字段和更改通知方法来支持Binding。
比如把:
public class Test
{
     public string TestData1{get; set;}
     public string TestData2{get;set;}
}
变为:
public class Test : INotifyPropertyChanged
{
    private string _testData1;
     public string TestData1
     {
          get{return _testData1;}
          set
          {
               _testData1 = value;
               OnPropertyChanged("TestData1");
          }
     }
     private string _testData2;
     public string TestData2
     {
          get{return _testData2;}
          set
          {
               _testData2 = value;
               OnPropertyChanged("TestData2");
          }
     }
}
上述工作如果在遇到很多属性时, 会太累,而且容易出错。
因此, 我写了一个python的小工具,专门处理添加私有字段和更改方法通知的添加。
由于是第一次用python,中间有些知识点记下来。
1)用#注释代码, like:#version:1
2)用import导入其他库, like:import re
3) re是正则表达式库,shutil是copy或者备份文件的库
4)class的定义, like:class YourClassName:
5)构造方法的定义, like:def __init__(selft, yourParameter):
6) 方法的定义, like:def YourMethodName(self, yourParameter):
7) self类似c、c++中的this指针
8)python中的正则表达式字符串可以用?P<your_key>来标记一个符合的值, like:
pattern = "((?P<space>\s*)public\s+"
testData = "    public "
m = re.match(pattern, testData)
print(m.group('space')
如果一个测试数据的开头有很多空格等符合\s*条件的, 我们可以用space作为关键字来索引到具体空格。此示例中为4个空格
9)字符串的格式化可以用“%(your_key)s”%{'your_key':your_value}, like:
self.classPattern = "(\s*public\s+%(class)s\s+%(derived)s\s+%(colon)s+\s*%(base)s)"%{'class':"class", 'derived':"\w+", 'colon':":", 'base':self.baseClassName}
10)如果字符串跨行, 请在字符串行尾加上\
11)re.match()返回值若不匹配则为None
12)可以将正则表达式的匹配结果转为字典, like:
m = re.match(pattern, testData)
yourDict = m.groupdict()
13)可以用raise Exception("Your exception information")来抛出异常
14)用lower()来将字符串转为小写
15)用replace(old, new, length)来替换字符串, 并且可以指定替换几个
16)用input()可以接受控制台输入
17)if,else,for语句的定义:
if methodName == "":
     methodName = "OnPropertyChanged"
for line in fileBackup:
     print("Line is: %s"%line)
18)文件操作有open,write,close等方法, 其中open接受打开的方式, 比如“r+"代表为可读写, "w+"代表先清空源文件(若存在)再读写
19)可以用cxfreeze来打包py为exe文件,安装cxfreeze后,打开命令行进入python路径:C:\Python33\Scripts, 使用cxfreeze PropertyChanged.py --install-dir=D:/OnPropertyChanged
运行成功后,OnPropertyChanged目录下会有exe,python33.dll以及相关依赖的pyd文件
download:http://sourceforge.net/projects/cx-freeze/?source=dlp
20)另外发现TortoiseGit和Sublime Text很好用。

ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点的更多相关文章

  1. iOS: 在Xcode7系列中给类名自动添加前缀

    添加前缀原因: 我个人还是很喜欢 Class Prefix 的,因为: 1. 使用它几乎不增加什么成本, 2. 不使用它可能会造成安全隐患, 3. 它能够以直接的方式编码一些信息以供未来的回溯, 4. ...

  2. 小工具:使用Python自动生成MD风格链接

    很久之前我在Github上搞了一个LeetCode的仓库,但一直没怎么维护.最近发现自己刷了不少LC的题目了,想搬运到这个仓库上. 玩Github最重要的当然是写README了,MD的逼格决定了项目牛 ...

  3. Golang字符串是否存在于切片或数组中的小工具(基本等同于python in语法)

    // golang中是没有判断字符串是否存在数组或切片里的内置方法, 所以我们可以自己搞一个快速小组件 func Find(slice []string, val string) (int, bool ...

  4. (转)Eclipse中自动添加注释(作者,时间)

    方法一:Eclipse中设置在创建新类时自动生成注释  windows-->preference  Java-->Code Style-->Code Templates  code- ...

  5. Eclipse中自动添加注释

    方法一:Eclipse中设置在创建新类时自动生成注释  windows-->preference  Java-->Code Style-->Code Templates  code- ...

  6. webpack.config.js====CSS相关:postcss-loader加载器,自动添加前缀

    1. 在webpack中加载css需要先安装style-loader 和 css-loader cnpm install --save-dev style-loader css-loader 2. 在 ...

  7. Eclipse新建类的时候如何自动添加注释(作者,时间,版本等信息)

    为什么80%的码农都做不了架构师?>>>   方法一:Eclipse中设置在创建新类时自动生成注释 windows–>preference  Java–>Code Sty ...

  8. Word·去掉复制粘贴自动添加的空格

    阅文时长 | 0.05分钟 字数统计 | 145.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『Word·去掉复制粘贴自动添加的空格』 编写人 | SCscHero 编写时间 | ...

  9. PowerDesigner 如何添加每个表中共用的字段及自动添加注释

    PowerDesigner 如何添加每个表中共用的字段: 有时候在创建表的时候会有一些共用的字段,但是每一张表都要去创建,这样做很麻烦,特别是这样重复的工作,稍不留意就会出现问题,实际上在PD中有这样 ...

随机推荐

  1. LOJ#10064. 「一本通 3.1 例 1」黑暗城堡

    LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...

  2. SDOI2017第一轮

    本蒟蒻表示终于$AC$了$SDOI2017\text{第一轮}$! 兴奋! 附上各个题的题解: $DAT1$: $T1$: BZOJ4816: [Sdoi2017]数字表格 $T2$: BZOJ481 ...

  3. vue 指令系统的使用

    所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...

  4. hdoj 1455 Sticks 【dfs】

    题意:找最短的木棍可以组成的长度, hdoj  1518 的加强版 代码: #include <stdio.h> #include <string.h> #include &l ...

  5. mongodb 的注意点

    昨天同事安装mongodb遇到了些问题,问了下我,后拉发现都是些细节没注意(讲道理这应该是很简单,一顿操作就ok的事情) 首先,下载 mongo包, 然后 ,解压安装, 启动之. 问题就出现在他后台启 ...

  6. SAP文件夹的判断与创建

    [转自 http://blog.csdn.net/saphome/article/details/6956918] SAP文件夹存在的判断与创建 2010-08-29 20:15 相关函数:WS_QU ...

  7. STM32L0 HAL库 UART 串口读写功能

    串口发送功能: uint8_t TxData[]= "01234abcde"; HAL_UART_Transmit(&huart2,TxData,,0xffff);//把T ...

  8. 分布式文件存储——GlusterFS

    一.概论 1.简介 GlusterFS (Gluster File System) 是一个开源的分布式文件系统,主要由 Z RESEARCH 公司负责开发. GlusterFS 是 Scale-Out ...

  9. Hadoop Pig

    Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境. Pig内部 ...

  10. c++ 之重要性

    c++的功能比c语言大的多,c语言偏最底层,且程序短小,而对于一个大的系统,用c++,因为它具备了c语言的优点. 很多学嵌入式的觉得学了c语言之后,就不用学c++了,会认为c++很简单,然而,c++并 ...