• 第十七天学习: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)的变量, 只能是允许这个类本身进行访问了
  • 相关阅读:
    [51Nod] 配对
    [Poj] Roads in the North
    【Java学习笔记之二十六】深入理解Java匿名内部类
    【Java学习笔记之二十五】初步认知Java内部类
    【Java学习笔记之二十四】对Java多态性的一点理解
    【Java学习笔记之二十三】instanceof运算符的用法小结
    【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析
    图论--拓扑排序模板
    hdu 5384 AC自动机
    java大数
  • 原文地址:https://www.cnblogs.com/yshan13/p/7802105.html
Copyright © 2020-2023  润新知