#1. #A:多行注释的方法:使用3个'或者" #B:__init__()函数类似于类的构造函数,在类对象初始化时候会自动调用 #C:在定义类的成员函数的时候,self形参类似于C++的this指针,必须位于第一个形参的位置,会自动传递 #D:在__init()__函数中,通过self定义的变量可供类内所有方法使用,还可以通过类的任何实例访问 #E:类的成员函数第一个参数都是带self的,不带self的都是静态函数,不能被类的实例访问,可以通过类名访问 #F:给类的成员变量或者成员函数加上前缀__就会使其访问权限变为私有的 #G:给类的成员变量或者成员函数加上前缀__和后缀__会使其在类外能被实例访问,一般不使用这种方法,这是类的一些特殊属性的使用方法 ''' note note note ''' """ note note note """ class CTest(): def __init__(self, value0, value1): self.value0 = value0 #定义类的成员变量 self.__value1 = value1 #类的私有成员变量 self.__value2 = 0 #赋予类的成员变量初始值 self.__value3__ = 1 print("__init__") def FunPrint(self): print(str(self.value0) + " " + str(self.__value1)) def FunSet(self, value0, value1): self.value0 = value0 self.__value1 = value1 def FunTest(): #类的静态成员函数 print("FunTest") def __FunTest1(self): #类的私有成员函数 print(self.__value2) def FunPrintValue3(self): self.__FunTest1() def __FunSpecial__(self): print("FunSpecial") Test = CTest('szn', 10) #__init__ Test.FunPrint() #szn 10 Test.FunSet(20, 's') Test.FunPrint() #20 s print(Test.value0) #20 #print(Test.__value1) #调用会出错 #Test.FunTest() #调用会出错 CTest.FunTest() #FunTest Test.FunPrintValue3() #0 #Test.__FunTest1() #调用会出错 Test.__FunSpecial__() #FunSpecial print(str(Test.__value3__)) #1 print("") #2. #A:子类可以通过super(类名,类实例)来访问子类中覆盖的父类的成员函数 #B:若子类没有定义__init__()函数,则会自动调用父类的__init__()函数,若子类定义了__init()__函数,则不会自动调用父类的__init__()函数 #C:super()函数是一个特殊的函数,将父类和子类关联起来 #D:若不调用父类的__init__()函数,则子类将无法调用父类的成员函数 class CFather(): def __init__(self, value0 = 0): self.value = value0 print("Father") def GetValue(self): print(str(self.value) + " Father") class CChild0(CFather): def GetValue(self): #覆盖了父类的同名函数 print("CChild0_GetValue") super().GetValue() class CChild1(CFather): def __init__(self, value0): print("CChild1") class CChild2(CFather): def __init__(self): CFather.__init__(self) class CChild3(CFather): def __init__(self): super().__init__() Child0 = CChild0(10) #Father Child0.GetValue() #CChild0_GetValue 10 Father super(CChild0, Child0).GetValue() #10 Father Child1 = CChild1(1) #CChild1 #Child1.GetValue() #调用会出错 Child2 = CChild2() #Father Child2.GetValue() #0 Father Child3 = CChild3() #Father Child3.GetValue() #0 Father #3. #A:导入类 #from FileName import ClassName #从文件FileName中导入类ClassName 可以直接使用ClassName #from FileName import ClassName0, className1 #从文件FileName中导入类ClassName0,ClassName1 可以直接使用ClassName ClassName1 #import FileName #从文件FileName中导入所有类 使用文件名.ClassName #from FileName import* #从文件FileName导入所有类,不建议使用,可能导致名字冲突 直接使用类名 #4. #A:python标准库中的OrderedDict是类似于字典的类,其存储是具有顺序的,其存在于模块collections中 from collections import OrderedDict Test = OrderedDict() Test['s0'] = '10' Test['s1'] = 11 print(Test) #OrderedDict()([('s0', '10'), ('s1', 11)])