个人笔记-Python3进阶

class类的关键字,class来声明类,类的名称首字母大写,多单词情况下每个单词首字母大写。
class Person(object):   # object为通用对象
    name = '小木'  # 类属性
    def dump(self):   # 类函数
        print(f"{self.name} is dumping")
xiaomu = Person()   # 类的实例化
print(xiaomu.name)  # 通过实例化进行属性调用
xiaomu.dump()   # 用过实例化进行函数调用
运行结果:
小木
小木 is dumping
类的self
self 是类函数中的必传参数,且必须放在第一个参数位置。
self 是一个对象,它代表实例化的变量自身。
self可以直接通过点来定义一个类变量。
self中的变量与含有self参数的函数可以在类中的任何一个函数内随意调用
非函数中定义的变量在定义的时候不用self。
一、python中self代表类的实例
self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
二、python中只有针对类来说self才有意义
python中的self,说的即是python类中的self。
三、self只能用在python类的方法中
四、具体举例说明
1、属性
(1)如果变量定义在类下面而不是类的方法下面,那这个变量既是类的属性也是类实例的属性。
class Cat:
    color = 'black'
    weight = '2kg'
cat = Cat()
print(cat.color)
print(cat.weight)
print(Cat.color)
print(Cat.weight)
运行结果:
black
2kg
black
2kg
(2)如果变量定义在类的方法下面,如果加了self,那这个变量就是类实例的属性,不是类的属性;如果没有加self,这个变量只是这个方法的局部变量,既不是类的属性也不是类实例的属性。
class Cat:
    def __init__(self):
        self.a = 1
        b = 2   # 如果没有加self,变量只是这个方法的局部变量
cat =Cat()
cat.a
cat.b
运行结果
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/Python3Test/Test1.py", line 10, in <module>
    cat.b
AttributeError: 'Cat' object has no attribute 'b'
2、方法
(1) 如果在类中定义函数时加了self,那这个函数是类实例的方法,而不是类的方法。
class Cat:
    def eat(self):
        print('我爱吃鱼')
cat= Cat()
cat.eat()
Cat.eat()
运行结果
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/Python3Test/Test1.py", line 9, in <module>
    Cat.eat()
TypeError: eat() missing 1 required positional argument: 'self'
我爱吃鱼
(2) 如果在类中定义函数时候没有加self,那这个函数就只是类的方法,而不是类实例的方法。
class Cat:
    def eat():
        print('我爱吃鱼')
cat= Cat()
cat.eat()
Cat.eat()
运行结果
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/Python3Test/Test1.py", line 7, in <module>
    cat.eat()
TypeError: eat() takes 0 positional arguments but 1 was given
类的构造函数
类中的一种默认函数,用来将类实例化的同时,将参数传入类中
构造函数的创建及用法
class Test(object):
    def __init__(self, a):
        self.a = a
    def run(self):
        print(self.a)
        
t = Test(1)
t.run()
运行结果
1
对象的生命周期
_ _init_ _:对象生命的开始  内存中分配一个内存块
实例化...调用..操作..
_ _del_ _ : 删除对象   从内存中释放该内存块
def 函数不需要书写,默认存在于类中,自动清理内存
  1. python中的内存管家会按时清理内存,一般是当数据失去了它的名字,或者代码执行到了最后一行的时候,内存管家会清理掉内存。
  2. __del__这种两边都有下划线的函数叫作,内置函数,del函数在一定的时候会自动执行删除无用数据,这一点对我们来说是非常方便的。dir()函数可以查看对象的内置函数,继承object函数,可以继承很多的有用的内置函数。
私有函数与私有变量
class Person(object):
    def __init__(self,name):
        self.name = name
        self.__age = 33    # 私有函数
    
    def dump(self):
        print(self.name, self.__age)
        
    def __cry(self):    # 私有方法
        return 'I want cry'
无法被实例化对象调用。
类的内部可以调用私有函数和变量。
作用是只希望该函数只能在类中调用
使用方法:在前面加两个下划线_ _ 
强行调用方法:使用dir查看类中全部函数名,找到该私有函数名,就能调用。
python中封装的概念
将不对外的私有属性或方法通过可对外使用的函数而使用(类中定义私有的,只有类内部使用,外部无法访问)
这样做主要原因:保护隐私,明确区分内外
封装例子:
class Parent(object):
    def __hello(selfs,data):    #私有函数,包含不想被使用者调用的功能
        print('hello %s' % data)
    def helloworld(self):   # 这就是中间的桥梁,完成对私有函数的引用
        self.__hello('world')
if __name__ =='__main__':
    p = Parent()
    p.helloworld()
装饰器
什么是装饰器:
也是一种函数,可以接受函数作为参数,可以返回函数,接收一个函数,内部对其处理,然后返回一个新函数,动态的增强函数功能。
将C函数在a函数中执行,在a函数中可以选择执行或不执行c函数,也可以对c函数的结果进行二次加工处理。
def out(func_args):     # 外围函数
    def inter(*args, **kwargs):     # 内嵌函数
        return func_args(*args, **kwargs)
    return inter    # 外围函数返回内嵌函数
装饰器的用法
# 测算面积后格式化
def format_(fun):
   def b(*args, **kwargs):
       res = fun(*args, **kwargs)
       return f'面积为{res}平方米'
   return b
# 测算正方形面积
@format_
def sq(a, b):
   return a * b
# 测算三角形面积
@format_
def sj(a, h):
   return a * h / 2
print(sq(2, 2))
print(sj(2, 1))
类的常用装饰器
classmethod、staticmethod、property
classmethod的功能:将类函数可以不经过实例化而直接被调用
class Test(object):
    @classmethod
    def add(cls, a, b):  # cls替代普通类函数中的self,变为cls,代表当前操作的是类
        return print(a+b)
Test.add(1,2)   # 直接调用
staticmethod的功能:将类函数可以不经过实例化而直接被调用,该装饰器调用的函数不许传递self或cls参数,且无法再该函数内调用其他类函数或类变量
class Test(object):
    @staticmethod
    def add(a, b):
        return a+b
# 注意在该函数内无法调用其他类函数或者类变量
print(Test.add(1,2))
property的功能:将类函数的执行免去括弧,类似于调用属
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是第八篇笔记。 ### Python 文件操作 #### 文件操作基础 - 文件操作是指对计算机硬盘上的文件进行读写操作,Python 中的文件操作是通过内置的 `open()` 函数实现的。 - `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)` 函数用于打开一个文件,并返回文件对象。 - `file`:要打开的文件名(包含路径)。 - `mode`:文件打开的模式,有读模式('r')、写模式('w')、追加模式('a')等。 - `buffering`:缓冲区大小,0 表示不缓冲,1 表示缓冲一行,大于 1 表示缓冲区大小,负数表示使用默认缓冲区大小。 - `encoding`:文件编码格式。 - `errors`:错误处理方式。 - `newline`:换行符。 - 文件对象的方法: - `read(size=-1)`:读取文件内容,`size` 表示读取的字节数,不指定表示读取整个文件内容。 - `readline(size=-1)`:读取文件中的一行内容,`size` 表示读取的字节数,不指定表示读取整行内容。 - `readlines(hint=-1)`:读取所有行并返回一个列表,`hint` 表示读取的字节数,不指定表示读取全部行。 - `write(string)`:将字符串写入文件。 - `writelines(sequence)`:将字符串序列写入文件,序列中每个元素都是字符串。 #### 文件操作示例 - 打开文件:`file = open('file_name', 'r')`。 - 读取文件内容:`content = file.read()`。 - 关闭文件:`file.close()`。 - 读取文件中的一行内容:`line = file.readline()`。 - 逐行读取文件内容:`for line in file: print(line)`。 - 写入文件内容:`file.write('Hello World!')`。 - 写入多行内容:`file.writelines(['Hello', 'World', '!'])`。 #### 文件操作进阶 - 使用 `with` 语句可以自动关闭文件,避免忘记关闭文件而导致的问题。 - 示例: ```python with open('file_name', 'r') as file: content = file.read() ``` - 使用 `os` 模块可以对文件进行更加高级的操作,如文件重命名、删除等。 - 示例: ```python import os os.rename('file_name', 'new_file_name') # 重命名文件 os.remove('file_name') # 删除文件 ``` ### Python 面向对象编程 #### 面向对象编程基础 - 面向对象编程是一种编程思想,将程序中的对象看作是相互交互的实体,通过它们之间的交互来完成程序的功能。 - 类(class)是面向对象编程中的一个重要概念,它是一种用户自定义的数据类型。 - 类中包含属性(特征)和方法(行为),属性指对象的数据成员,方法指对象的行为成员。 - 类的定义: ```python class ClassName: # 类属性 attribute = value # 构造函数 def __init__(self, arg1, arg2, ...): self.arg1 = arg1 self.arg2 = arg2 ... # 类方法 def method(self, arg1, arg2, ...): ... ``` - 类的实例化: ```python object_name = ClassName(arg1, arg2, ...) ``` - 对象的属性和方法: ```python object_name.attribute # 访问对象的属性 object_name.method(arg1, arg2, ...) # 调用对象的方法 ``` #### 面向对象编程示例 - 示例:定义一个 `Rectangle` 类,实现矩形的面积和周长计算。 ```python class Rectangle: # 类属性 name = 'Rectangle' # 构造函数 def __init__(self, width, height): self.width = width self.height = height # 类方法 def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) ``` - 使用示例: ```python rectangle = Rectangle(3, 4) print(rectangle.name) # 输出 'Rectangle' print(rectangle.area()) # 输出 12 print(rectangle.perimeter()) # 输出 14 ``` ### 总结 本篇笔记介绍了 Python 中的文件操作和面向对象编程基础,包括文件操作函数的使用、类的定义、对象的实例化和属性、方法的访问等。了解和掌握这些内容可以帮助我们更好地进行 Python 编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值