写在前面:本文章内容基于Python3
os.path
可以将路经中的文件名和后缀名分开
os.path.splitext(file)[1]
分成了两部分,前面的是文件名,后面的是后缀import os.path
通过dump写数据到json文件,文件打开方式不能使用wb,可以使用w
类的基础用法
声明
class UserInfo(object)
其中,括号里的object表示从object继承而来,如果没有明确的父类,那么一般都是object,它是基类。此时,即使当前类什么也不写,也会有一些方法可以使用,就是从object继承而来的
对象绑定变量(属性)
如:
user = UserInfo() #假设UserInfo是一个类
user.name = 'root'
但是绑定的属性仅存在与当前的对象,也就是说,当重新定义一个变量user_2 = UserInfo()时,user_2并不会有name这个属性。如果需要每个对象都有这个属性,那么就需要在类中进行设定
一般都不会通过对象去绑定属性,因为这样做的话,当这个对象消亡了,所绑定的这些属性也就没了,如果有特殊的需求,当然可以这么做
类中绑定变量(属性)
__init__方法
示例1:
class UserInfo(object):
def __init__(self,name,psw,id):
self.name=name
self.psw = psw
self.id = id
def print(self):
print("name:%s id:%d" %(self.name, self.id))
user = UserInfo("lala","ssss",1)
__init__的第一个参数必须是self(代表当前对象本身),此后,在创建对象的时候,也需要传入__init__中的参数name和psw,self此时可以忽略…
示例2:
class UserInfo(object):
def __init__(self,name,psw):
self.name=name
self.__psw = psw
user = UserInfo("lala","ssss")
user.__psw = "3333" #报错
psw这个属性如果不希望在外部被访问,那么就在属性名前加两个下划线,如果强行访问,会报错,但是在类内部还是可以访问的。就像C++中类中的private属性,但是Python控制没那么强
user._UserInfo__psw = “333”
如果这样做的话,还是可以对我们所认为的私有属性的psw进行修改….(注意类名之前是一个下划线,属性名前面是两个下划线)
object类
里面定义了很多基础的方法
继承
可以继承方法,也可以重写方法
类方法
示例
class UserInfo(self)
....
def __len__(self):
print("调用len方法")
retrurn 100 #这个方法应该返回一个长度,仅做测试用
user = UserInfo()
len(user) #打印调用len方法
其它内置函数大都也是这样的声明及调用的