由于自己不是科班出身,也没有系统的上过课程,我在学习的过程中会遇到一些与python语法相关的问题,在这里做一下总结与梳理,以防忘记。其中的内容均为自己理解的,有所纰漏请不吝赐教。
1. class的含义及相关操作
python是面向对象的语言,我们在编程中也是在对各种对象进行操作。对象拥有方法和属性两个元素,方法可以理解为函数,属性可以理解为参数。
1.1 基操
class定义了一种相似对象的合集,通过class可以产生一系列具有相同属性和方法的对象。在方法的定义中,有一些特殊类型的方法和属性。
class People():
name = 'None'
__name = 'None'
def __init__(self, name):
print('My name is', name)
def __print_myself(self):
print('I am people')
def print_myself(self):
print('I am people')
在上面的代码中,我们创建了一个名为People的类(大家约定类的定义首字母大写),在类中有name,__name两个变量,__init__,print_myself以及__print_myself三个函数。 其中如果变量或者函数前有‘__’标识,则称其为私有变量、函数,该变量、函数只能在类的内部调用,在外部调用会出错。
结果演示如下:
xiaoming = People('xiaoming')#实例化类
#输出 My name is xiaoming
在对class使用之前需要先进行实例化。也就是把定义的class变成一个可以看得见摸得着的对象。而且在实例化时,会默认执行__init__()初始化函数,因此在实例化时需要传入__init__()所需参数。
xiaoming.__print_myself()#私有函数调用
#报错 AttributeError: 'People' object has no attribute '__print_myself'
xiaoming.print_myself()#共有函数调用
#输出 I am people
从以上两个代码段便可以看出,只有共有函数可以在类之外调用,而私有函数不可以。变量同理。
1.2 继承
在调用第三方库时,常出现通过继承第三方库的class类,而新建class的情况。
class People():#新建父类
name = 'None'
__name = 'None'
def __init__(self):
print('I am a people')
def __print_myself(self):
print('I am people')
def print_myself(self):
print('I am people')
class Student(People):#继承父类
def __init__(self):
super().__init__()#继承初始化函数
print("I am a student")
xianming = Student()
在上图代码中,创建了People类,并用Student进行了继承。通过super().__init__()可以同时进行父类的初始化。
xiaoming.name
#输出:'None'
xiaoming.print_myself()
#输出: I am people
上文代码中,对父类的方法及变量进行调用。