• 第二十六章 类代码编写基础


    #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'
    

      

  • 相关阅读:
    day 011总结
    day 010 总结
    day 10作业
    day 009总结
    day 008总结
    wireshark 解密tls消息
    js基础 数组slice
    js基础 数组splice
    js基础 Array.from
    js基础 Array.of
  • 原文地址:https://www.cnblogs.com/szn409/p/6735708.html
Copyright © 2020-2023  润新知