利用python在gnuradio下写一个block(python 学习)


学习背景:c与c++语言基础

主要想记录一下,python语言里面区分与c/c++的一些不同点 (应该会持续更新)


1.python 的魔法方法(找本书一看或者百度,一目了然)


2.类的区别

(1)特殊的构造函数与析构函数(找本书一看或者百度,一目了然)

(2)python类声明中的self

在python中虽然可以灵活的定义任何变量,但是在类的声明中加入了self关键字,用以在很多场合进行区别,因此一些c++的有些语法则行不通了。

        self一是区分类中与类外的函数或变量,二是区分类中的成员函数与成员变量(等等)总之:self代表当前对象的地址

class test
{
   public:
   int name = 100;
   void showname()
   {
       int name = 200;
       printf("%d",name);
   }
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    test T;
    T.showname();
    printf("\n%d",T.name);
    return 0;
}

这段c++函数,如果把int name  = 200;注释掉再运行showname也不会有任何问题。这说明,编译器会自动区分函数内部的name与函数外、类里面的name,优先选择函数内部name。并且不会覆盖掉函数外的name。

# class test :
#     name = 100;
#     def showname(self):
#         print("%d"%name)
#
# if __name__ == '__main__':
#     a = test()
#     a.showname()



class test :
    name = 100;
    def showname(self):
        print("%d"%self.name)

if __name__ == '__main__':
    a = test()
    a.showname()
这段python代码,上面的运行会报错,而下面的没有问题,python不会自动取访问成员变量name。

Q : 为什么pyhon方法里面(我喜欢叫函数,一个意思)第一个变量总是self? 

A:  看c++中有一章提到,成员函数是多个对象共用,而成员变量则独自分开,这样避免了存储空间的浪费。这个原理在哪种语言都适用,当各个对象共用函数时,当然需要一个输入变量来区分不同的对象,因此就有了self,代表着对象的地址。所以在函数第一个变量用self(命名可以随便)是符合逻辑的,只不过感觉上会有点多余。
(因为习惯了编译器代做一些工作,编写起来觉得有些别扭,就深究了一下。或许这就是解释性语言的一些不同)



你可能感兴趣的:(gnuradio,python)