#1. #A:类对象提供默认行为,是实例对象的工厂。实例对象时程序处理的实际对象,每次调用一个类就会产生这个类新的实例 #B:执行class语句就会得到类对象 # class语句创建类对象并将其赋值给变量名。就像函数的def一样 # class语句内的顶层赋值语句会产生类的属性 #2. #A:在方法内对self属性做赋值运算会产生每个实例自己的属性 # 在类方法函数内,第一个参数一般为self,会引用正处理的实例对象,对self的属性做赋值运算,会改变或创建实例内的数据,而非类的数据 # 第一个参数其名称可以是任意的,一般设为self #B:在类外,则可以通过对实例对象进行赋值运算来产生属性 class CTest: def Fun0(self): self.value = 10 def Fun1(self): #若在类的实例调用Fun0前调用此函数,会出错 return self.value Test = CTest() bValue0 = 'value' in dir(Test) #bValue0 = False Test.Fun0() bValue1 = 'value' in dir(Test) #bValue1 = True bValue2 = 'TestValue' in dir(Test) #bValue2 = False Test.TestValue = 'a' bValue3 = 'TestValue' in dir(Test) #bValue3 = True bValue4 = 'TestValue' in dir(CTest) #bValue4 = False #3. #A:父类列在了类开头的括号中 #B:__init__方法,称为类的构造函数方法,它是用于初始化对象的状态的 class CFather: def __init__(self): self.value = 'CFather' class CChild(CFather): def Fun0(self): return self.value Test = CChild() value = Test.Fun0() #value = 'CFather' #4.重载运算符的主要概念: #A:以双下划线命名的方法(__X__)是特殊钩子。python运算符重载的实现是提供特殊命名方法来拦截运算。 # python替每种运算和特殊命名的方法之间,建立了固定不变的映射关系 #B:当实例出现在内置运算时,这类方法会自动调用。 # 例如,如果实例对象继承了__add__方法,当对象出现在+表达式内时,该方法会自动调用,该方法的返回值会变成相应表达式的结果 #C:运算符覆盖方法没有默认值,也不需要 class CTest: def __init__(self): self.value = 10 def __add__(self, value): return self.value + value def __str__(self): #通过内置函数str或者print的时候会自动调用 return 'str' Test = CTest() value = Test + 20 #value = 30 #value1 = 20 + Test #报错 print(Test) #输出str str = str(Test) #str = 'str' #5. #A:直接给类添加属性 class CTest : pass Test = CTest() #这个类的实例开始是一个空的命名空间对象,因为她知道创建她的类,所以她会得到附加在类上的属性 CTest.value0 = 'a' CTest.value1 = 'b' vlaue0 = CTest.value0 #vlaue0 = 'a' value1 = Test.value1 #value1 = 'b' def Fun0(T): T.value0 = 'c' CTest.Fun0 = Fun0 Test.Fun0() value = Test.value0 #value = 'c'