zoukankan      html  css  js  c++  java
  • 第十七天学习:python的类(2)

    如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法
    重写方法:
    parent.__init__(self)
    super(child, self).__init__()
     
    实例:
     
    方法重写
    class Parent:  # 定义父类
        def myMethod(self):
            print '调用父类方法'
    
    
    class Child(Parent):  # 定义子类
        def myMethod(self):
            print '调用子类方法'
    
    结果----------------------------------------------------------------------------------------------------
    c = Child()  # 子类实例
    c.myMethod()  # 子类调用重写方法
    ---------------------------------------------------------------------------------------------------------------------
    
    
    
    class parent(object):
        parent_name = 'parent'
        sex = 'F'
        def __init__(self):
            print('my name is {}'.format(self.parent_name))
        def get_name(self):
            print('my name is parent')
            return self.parent_name
        def get_sex(self):
            return self.sex
    
    class child(parent):
        name = 'child'
        def __init__(self):
    #        parent.__init__(self)
            super(child, self).__init__()
            print('my name is {}'.format(self.name))
            print('***********************************')
        def hello(self):
            print('hello world')
        def get_name(self):
            print('##########################')
            super(child, self).get_name()
            print('this is child method')
            print('##############################')
    a = child()
    a.hello()
    a.get_name()
    print(a.get_sex())
    
    结果:
    my name is parent
    my name is child
    ***********************************
    hello world
    ##########################
    my name is parent
    this is child method
    ##############################
    F
    

      

    类的私有属性
    _attr:单下划线,表示的是protect类型的变量,即保护类型只能允许其本身与子类访问。若内部变量标示,如,当使用from M inport时候,不会将以一个下划线开头的对象引入
    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问,连子类对象也不能访问到这个数据。在类内部的方法中使用时 self.__private_attrs。
    类的方法
    在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数
    类的私有方法
    __private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods
     
    内置类属性:
    __name__: 类名
    __doc__ :类的文档字符串
    __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
    __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
    __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
     
     
    单下划线、双下划线、头尾双下划线说明:
    __foo__: 定义的是特列方法,类似 __init__() 之类的。
    _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
    __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了
  • 相关阅读:
    PNG文件格式具体解释
    opencv2对读书笔记——使用均值漂移算法查找物体
    Jackson的Json转换
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 单词接龙
  • 原文地址:https://www.cnblogs.com/yshan13/p/7802105.html
Copyright © 2011-2022 走看看