编译器:Visual Studio Code
环境:Python 3.9.6
记录学习过程,如有冒犯,不胜荣幸。

#类与对象
    #类class
class Test:         #class 类名:
    num = 10        #类属性
    def fun(self):   #实例方法
        print('Example')
    @staticmethod   #静态方法
    def means():    #通过类名直接调用
        return "Static "
    @classmethod    #类方法
    def way(cls):   #通过类名直接调用
        print("正在使用")
    def __init__(self,name,age) :     #初始化方法
                         #self.__为实体属性,即把参数的值赋给实体属性。类似于Java的this
        self.name = name
        self.age = age
    def fun1(self):
        print(self.name+"正在调用")

    #对象

num_1 = Test("Name",-1)          #创建对象(类的实例化)
#对象名 = 类名()
'''
num_1.fun()             #调用方法。对象名.方法()
Test.fun(num_1)         #用类名调用方法,传入类的对象
'''
'''
print (num_1.means())
print(Test.means())     #通过类名直接调用静态方法
print(Test.num)         #调用类属性。 类名.类属性
Test.num = 100          #修改属性值
print(Test.num)
'''
'''
print(id(Test))     #分配内存空间
print(type(Test))   #<class 'type'>
print(Test)         #<class '__main__.Test'>        创建了类对象Test
'''

stu_1 = Test("张三",20)
stu_2 = Test("李四",18)         #传参至init方法
'''
print(stu_1.name,stu_1.age)     # 张三 20
print(stu_2.name,stu_2.age)     # 李四 18
stu_1.fun1()                    # 张三正在调用
stu_2.fun1()                    # 李四正在调用
'''

    #类的继承
class Test_1(Test):             #class 类名(父类名,父类名,object)//python支持多继承,共同父类object
    def __init__(self, name, age,grade):
        super().__init__(name, age)     #super().父类方法名()调用被隐藏的方法
        self.grade = grade
    #子类必须在构造函数中调用父类的构造函数

    #方法重写
    def fun1(self):                 #重写Test类的方法fun1()
        super().fun1()              #输出 王五正在调用
        #return super().fun1() # 时,此行后的语句被隐藏
        print("方法重写")            #输出 方法重写
        
        
a = Test_1("王五",18,99)
'''    
a.fun1()                            #调用重写方法fun1()
print(a.__dict__)                   #特殊属性__dict__,获得对象的属性以字典形式返回
#{'name': '王五', 'age': 18, 'grade': 99}
'''

#模块(.py的文件)
    #导入模块   import 模块名称     from 模块名称 import 函数/变量/类
import math                         #导入系统math模块
print(math.pi)                      #3.141592653589793
from math import pi                 #导入math模块的pi
print(pi)

if __name__ == "__main__":          #以主程序形式运行,当该模块被其他模块导入时,不执行主程序
    pass

#包
    #import 包名.模块名
import Package_1.page_1
    #包是包含__init__.py文件的目录

#文件读写
    #创建文件对象
#对象名 = open(文件名[,mode,encoding])      打开模式默认为mode只读,文本字符编写格式为gdk
file_1 = open("Data.txt","r")               #"r"表示read读取
print(file_1.readlines())                   #编码格式ANSI。readline()读取一行,readlines()读取所有行
file_1.close()

file_2 = open("Data_1.txt","w")             #"w"表示写入。如果文件不存在,则自动创建;否则覆盖原有内容
file_2.write("Hello World")                 #write()写入字符串
file_2.close()

file_3 = open("Data_1.txt","a")
file_3.write("\nPyhton")
file_3.close()

#with语句
with open("Data.txt","r") as File:
    print(File.read())
    #with语句自动管理上下文资源,不需要close()就能确保文件正常关闭
    #with open("文件名","打开模式") as 对象名