PoEdu_Python_Lesson009_类的基础用法、使用dump写数据到json文件的注意点

来源:互联网 发布:永宏编程手册 编辑:程序博客网 时间:2024/06/14 08:36

写在前面:本文章内容基于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 = pswuser = 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方法

其它内置函数大都也是这样的声明及调用的