• 一入python深似海--class


    python class

    分为三个部分:class and object(类与对象),inheritance(继承),overload(重载)and override(覆写)。

    class and object

    类的定义,实例化。及成员訪问。顺便提一下python中类均继承于一个叫object的类。
    class Song(object):#definition
    
        def __init__(self, lyrics):
            self.lyrics = lyrics#add attribution
    
        def sing_me_a_song(self):#methods
            for line in self.lyrics:
                print line
    
    happy_bday = Song(["Happy birthday to you",
                       "I don't want to get sued",
                       "So I'll stop right there"])#object1
    
    bulls_on_parade = Song(["They rally around the family",
                            "With pockets full of shells"])#object2
    
    happy_bday.sing_me_a_song()#call function
    
    bulls_on_parade.sing_me_a_song()

    inheritance(继承)

    python支持继承。与多继承。可是一般不建议用多继承。由于不安全哦!
    class Parent(object):
    
        def implicit(self):
            print "PARENT implicit()"
    
    class Child(Parent):
        pass
    
    dad = Parent()
    son = Child()
    
    dad.implicit()
    son.implicit()

    overload(重载)and override(覆写)

    重载(overload)和覆盖(override)。在C++,Java。C#等静态类型语言类型语言中,这两个概念同一时候存在。
    python尽管是动态类型语言,但也支持重载和覆盖。

    可是与C++不同的是,python通过參数默认值来实现函数重载的重要方法。

    以下将先介绍一个C++中的重载样例,再给出相应的python实现,能够体会一下。


    C++函数重载样例:
    void f(string str)//输出字符串str  1次
    {
          cout<<str<<endl;
    }
    void f(string str,int times)//输出字符串  times次
    {
          for(int i=0;i<times;i++)
           {
                cout<<str<<endl;
            }
    }

    python实现:

    通过參数默认值实现重载
    <span style="font-size:18px;">def f(str,times=1):
           print str*times
    f('sssss')
    f('sssss',10)</span>


    覆写

    class Parent(object):
    
        def override(self):
            print "PARENT override()"
    
    class Child(Parent):
    
        def override(self):
            print "CHILD override()"
    
    dad = Parent()
    son = Child()
    
    dad.override()
    son.override()

    super()函数

    函数被覆写后。怎样调用父类的函数呢?
    class Parent(object):
    
        def altered(self):
            print "PARENT altered()"
    
    class Child(Parent):
    
        def altered(self):
            print "CHILD, BEFORE PARENT altered()"
            super(Child, self).altered()
            print "CHILD, AFTER PARENT altered()"
    
    dad = Parent()
    son = Child()
    
    dad.altered()
    son.altered()

    python中。子类自己主动调用父类_init_()函数吗?

    答案是否定的,子类须要通过super()函数调用父类的_init_()函数

    class Child(Parent):
    
        def __init__(self, stuff):
            self.stuff = stuff
            super(Child, self).__init__()




  • 相关阅读:
    mysql索引及优化
    mysql5.5 uuid做主键与int做主键的性能实测
    php生成UUID
    Android 图片的裁剪与相机调用
    Android GPS 临近触发
    Android中GPS类及方法简介
    永久删除 tadb.exe
    linux服务器调整参数支持高并发
    隐藏nginx 版本号信息
    nginx 重写 rewrite 基础及实例
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10758659.html
Copyright © 2020-2023  润新知