• Day27


    类的专有方法:

        __init__ 构造函数,在生成对象时调用

        __del__ 析构函数,释放对象时使用

        __repr__ 打印,转换

        __setitem__按照索引赋值

        __getitem__按照索引获取值

        __len__获得长度

        __cmp__比较运算

        __call__函数调用

        __add__加运算

        __sub__减运算

        __mul__乘运算

        __div__除运算

        __mod__求余运算

        __pow__称方

    class BaseClass:    
        def __init__(self):
            self.name = 'BaseClass'
            print('BaseCalss: Constructor called')
        def getname(self):
            print('BaseCalss: self name equals ' + self.name)
     
    class DerivedClass(BaseClass):
        def __init__(self):
            super().__init__()
            print('DerivedClass: Constructor called')
     
    if __name__ == '__main__':
        class1 = BaseClass()
        class1.getname()
        
        class2 = DerivedClass()
        class2.getname()

    运行结果:

    BaseCalss: Constructor called
    BaseCalss: self name equals BaseClass
    BaseCalss: Constructor called
    DerivedClass: Constructor called
    BaseCalss: self name equals BaseClass

    子类也可以overwrite父类的方法,那么父类的方法就不会被调用,除非手动调用:

    class BaseClass:    
        def __init__(self):
            self.name = 'BaseClass'
            print('BaseCalss: Constructor called')
        def getname(self):
            print('BaseCalss: self name equals ' + self.name)
     
    class DerivedClass(BaseClass):
        def __init__(self):
            super().__init__()
            print('DerivedClass: Constructor called')
        def getname(self):
            print('self.name init value is ' + self.name)
            self.name = 'DerivedClass'
            print('DerivedClass: self name equals ' + self.name)
     
    if __name__ == '__main__':
        class1 = BaseClass()
        class1.getname()
        
        class2 = DerivedClass()
        class2.getname()

    运行结果:

    BaseCalss: Constructor called 
    BaseCalss: self name equals BaseClass 
    BaseCalss: Constructor called 
    DerivedClass: Constructor called 
    self.name init value is BaseClass 
    DerivedClass: self name equals DerivedClass

    python不仅仅支持单继承,还支持多继承

      class BaseClass1:

        def __init__(self):
            self.name1 = 'BaseClass1_Name1'
            self.name = 'BaseClass1_Name'
            print('BaseCalss1: Constructor called')
        def getname1(self):
            print('BaseCalss1: self name1 equals ' + self.name1)
        def getname(self):
            print('BaseCalss1: getname called, name equal ' + self.name)
     
    class BaseClass2:
        def __init__(self):
            self.name2 = 'BaseClass2_Name2'
            self.name = 'BaseClass2_Name'
            print('BaseClass2: Constructor called')
        def getname2(self):
            print('BaseClass2: self name2 equals ' + self.name2)
        def getname(self):
            print('BaseCalss2: getname called, name equal ' + self.name)
     
    class DerivedClass2(BaseClass1, BaseClass2):
        def __init__(self):
            BaseClass1.__init__(self)
            BaseClass2.__init__(self)
            print('DerivedClass: Constructor called')
            
    if __name__ == '__main__':
        class1 = BaseClass1()
        class1.getname1()
        
        class2 = BaseClass2()
        class2.getname2()
        
        class3 = DerivedClass2()
        class3.getname1()
        class3.getname2()
        class3.getname()

    运行结果:

    BaseCalss1: Constructor called 
    BaseCalss1: self name1 equals BaseClass1_Name1 
    BaseClass2: Constructor called 
    BaseClass2: self name2 equals BaseClass2_Name2 
    BaseCalss1: Constructor called 
    BaseClass2: Constructor called 
    DerivedClass: Constructor called 
    BaseCalss1: self name1 equals BaseClass1_Name1 
    BaseClass2: self name2 equals BaseClass2_Name2 
    BaseCalss1: getname called, name equal BaseClass2_Name

  • 相关阅读:
    第八章 Python 对象和类
    第七章 Python 盒子:模块、包和程序
    第六章 Python 函数(二)
    第五章 Python 函数(一)
    VS的32位、64位预处理定义;
    python 3D散点绘图;
    基于生长的棋盘格角点检测算法解读
    C++11: std::function<void()> func;
    有关pyinstaller打包程序后,转到其他电脑报“Failed to excute script"的问题;
    Qt: 监听文件夹QFileSystemWatcher;
  • 原文地址:https://www.cnblogs.com/jnbb/p/8358951.html
Copyright © 2020-2023  润新知