类
在python中,通过关键字class声明类。类具有属性和方法。
class stu:
def __init__(self, age, name):
self.age = age
self.name = name
def get_age(self):
return self.age
s = stu(18, '张三')
print(s.age, s.name)
类的方法
1、通过关键字def声明方法,类中的方法必须有至少一个形参,表示对象本身的引用,一般使用self表示。
2、形参与实参
除去首个参数表示对象引用,其与python函数的使用基本一致。
3、私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用
4、类的专有方法:
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方
类的属性
1、类属性和对象属性
类属性:在类中,方法外创建,不同对象对其引用是同一个变量
对象属性:在类中的方法中创建,不同对象对其引用是不同变量
2、私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
命名空间/作用域
Python 的作用域一共有4种,分别是:
有四种作用域:
L(Local):最内层,包含局部变量,比如一个函数/方法内部。
E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。
G(Global):当前脚本的最外层,比如当前模块的全局变量。
B(Built-in): 包含了内建的变量/关键字等,最后被搜索。
规则顺序: L –> E –> G –> B。
在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。
继承
class a:pass
class b(a):pass
python的继承通过在类名后的括号内声明继承的类实现,如果没有要继承的类,可以不带括号。
需要注意的是,子类并不会自动调用父类的init初始化方法,而是需要在子类的初始化方法中调用。
super().__init__()