类
字段(属性)
普通字段
(实例字段,属性,实例变量,对象变量)
特点:属于对象本身,必须使用实例对象 操作该变量;声明在init里面
语法: self.变量名 = 值
调用: 对象.变量名(类的外部调用)
self.变量名(类的内部调用)
注意 不能通过类名.对象变量调用
静态字段
(静态变量,类变量)
特点: 所有独享共享该字段
声明: 凡是声明在方法体外面的变量
使用:类名.静态变量
对象.静态变量(开发字符不要通过对象.静态变量的方式去操作)
方法
普通方法
(实例方法,对象方法)------>def 方法名(self)
声明: 凡是声明的方法第一个参数是self就是实例方法(对象方法)
特点: 只能通过对象去调用该方法
语法格式: def 方法名(self,参数,参数):
操作方式对象.方法名() 第一个self参数不需要传值
说明:self参数主要类的内部去使用
应用场景: 当我们在方法中需要用对象的变量的时候就需要把方法定义成对象方法
类方法
@classmethod
def 方法名(cls,参数,参数)
声明:第一个参数必须是cls,后面可定义参数可不定义,在方法体上面必须用@classmethod
调用方式 类.类方法名() 对象.类方法()
应用场景 当我们需要使用类里的静态字段或者类方法时
静态方法
@staticmethod
def 方法名(参数,参数)
调用 对象调用 类调用
属性(特殊属性)
作用 对数据进行效验 对数据进行操作
特点: 声明时是方法 使用时时属性
class Shop:
def __init__(self, no, name, discount_price):
self.no = no
self.name = name
# 对数据校验
self._price = 0
self.discount_price = discount_price
# def get_price(self):
# return self._price
# 获取值的操作
# def set_price(self, value):
# if value > 0:
# self._price = value
# else:
# raise Exception('输入的价格不符合规范!!!')
# 等价于 get_price
@property
def price(self):
return self._price
# 赋值操作
@price.setter
def price(self, value):
if value > 0:
self._price = value
else:
raise Exception('输入的价格不符合规范!!!')
"""
作用
如何操作
1> 声明方法 在方法上面使用@property装饰器 注意方法一定要有返回值
2> 赋值操作 使用方法名(self,传入的值),在方法上面使用第一步声明的方法名.setter
如何使用
通过对.属性
"""
if __name__ == '__main__':
phone = Shop(no=1, name='手机', discount_price=100)
# phone.price = -1000
phone.set_price(1000)
print(phone.get_price())
--------------------------------------------------------------
修饰符
单下划线 _ 类的内使用 能被继承(外部调用工具会警告)
下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。 (只是一种提示,程序的行为不受影响)
双下划线 __ 类的内部使用 不能被继承 外部无法调用
四下划线 系统内部使用
面向对象
封装
继承
多态
文件操作
语法格式 参数
语法 open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
file(必传) -----> 需要打开的文件
model(可选)------>打开文件的模式,默认的只读
可选值
r 以读的形式打开文件
w 以写的形式的打开文件
+可写
a 以追加的形式打开文件
b 以二进制的数据
常用组合
rw 以读写的形式打开文本文件
r+ 以读写的形式打开文本文件
w+ 可读可写的形式打开文本文件
a+ 以可读可写追加的形式打开文本文件
rb 以读的形式打开二进制文件
wb 以写的形式打开多媒体文件
ab 以追加的形式打开多媒体文件
rb+ 以可读可写的形式打开多媒体文件
encodeing(可选) 文件格式
buffering 表示文件读取操作的缓冲区
errors 如果读写文件的过程中,出现了错误,我们该如何处理
可选值 严格模式 'strict' 忽略 'ignore' 替换 'replace '
newline 表示换行,只对文本文件写入有效
closefd
读
方法一 :
一次性读取文件中所有内容
file.read(size) 参数 读取的字节数,默认读取到末尾
返回的值 字符串
方法二:
以行的形式读取文件内容
file.readlines()
返回值 列表
方法三:
读取文件中的一行文本数据
file.readline() 参数 读取一行数据的指定字符
返回值 字符串
写
必须修改mode的模式
方法一
往文件中写字符串
file.write(s) 参数 要写入的字符串
方法二
往文件中写多个字符串
file.writelines(list) 参数 列表字符串
关闭文件 file.close()
file类 读 read 写 write