zoukankan      html  css  js  c++  java
  • python 类成员函数

    http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/

    这篇文章总结的非常好

    主要注意的地方是

    1,在类内调用成员函数

    要用类名调用,而且要传入self(非静态成员函数是实例相关的)

    如:

    class Foo(object):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客     
    def bar(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客         
    print "bar!"
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客     
    def spam(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客         bar(self)     
    # 错误,引发NameError
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
             Foo.bar(self) # 合法的

    2,静态成员函数的使用

    要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数。

    class SimClass():
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客   @staticmethod
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客   def ShareStr():
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客      print "This is a static Method"
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客SimClass.ShareStr()   #使用静态函数

    3,多继承,以及多继承下,两个父类同名函数的调用问题

    class D(oject): pass                    #D继承自object
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
        class B(D):                             #B是D的子类
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
            varB = 42
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客        
    def method1(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客            
    print "Class B : method1"
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客    
    class C(D):                             #C也是D的子类
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
            varC = 37
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客        
    def method1(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客            
    print "Class C : method1"
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客       
    def method2(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客           
    print "Class C : method2"
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客   
    class A(B,C):                           #A是B和C的子类
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客
           varA = 3.3
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客       
    def method3(self):
    python 静态函数 类 - cowboy小屋 - cowboy小屋的博客          
    print "Class A : method3"
    如果我要调用A.method1() ,会出现什么结果?答案是ClassB:method1. 书上是这样介绍的:
    当搜索在基 类中定义的某个属性时,Python采用深度优先的原则、按照子类定义中的基类顺序进行搜索。**注意**(new-style类已经改变了这种行为,为了向前兼容,默认情况下用户定义的类为经典类,定义新式类需要继承所有类的基类object或者继承自object的新类。新式类的搜索方式是采用广度优先的方法查找属性。在 python 3 里面,所有的类都是object类的子类(隐式))
    上边例子中,如果访问 A.varB ,就会按照python 静态函数 类 - cowboy小屋 - cowboy小屋的博客A-B-D-C-D这个顺序进行搜索,只要找到就停止搜索.若有多个基类定义同一属性的情况,则只使用第 一个被找到属性值

  • 相关阅读:
    鸟哥linux——分区命令:split
    鸟哥linux——管线命令
    鸟哥linux——命令执行的判断依据:;,&&,||
    linux:数据流重导向
    Tensorflow计算模型——计算图
    DNS域名解析与本机Host
    相似图片搜索的原理
    谈谈回文子串
    关于字符串精确匹配
    音频采样
  • 原文地址:https://www.cnblogs.com/lc-cnblong/p/3512036.html
Copyright © 2011-2022 走看看