python中如何定义类?
Python是一门面向对象的编程语言,当然少不了类与对象!在学会用Python定义一个类之前,我们当然得首先了解一下类与对象的基本概念以及包含的内容。
Python类的基本概念Python的类是用关键字class,一个类中,一般包含有数据成员和方法。
数据成员,其实就是一个变量,有属于类的变量,也有属于某个方法的实例变量;
方法,就是函数,在Python中是用的关键字def,方法还可以分为三种类型:普通方法、类方法、静态方法,稍后细讲。
上面的代码,我定义了一个类Person,注意类名的首字母最好大写
定义了三个成员变量:sex是在类下面定义的,name和age是在类的构造函数__init__中定义的,这两种方式都能达到定义成员变量的目的,不过在构造函数中定义的成员变量,可以在构造对象的时候就赋值,而单独的成员变量要修改,需要给出一个方法才行,这就是一点区别
定义了一个方法: go_to_school,这个方法里面定义了一个变量is_ok(注意,这个is_ok是不能在其他地方使用的,属于方法的局部变量)
注意:参数self代表类的实例,而非类,类的方法和普通的函数最明显的区别就是有一个额外的参数,使用self可以在类中调用类的成员变量和方法。
上面就是我们使用Person类创建的对象,然后调用go_to_school方法,结果如下
可以看到,创建对象的参数写法分了三种方式,这与函数的调用比较类似,毕竟,创建对象就是在调用Person类的构造函数__init__
上面就是Python中类的基本定义和基本使用,当然,还有比较进阶一点的知识,比如类的继承、方法重写、私有变量和方法、静态和类方法、运算符重载、内部类等!这里就简单的提一些常用的。
Python类的继承Python是面向对象的,所以当然支持类的继承,而且还支持多继承。继承的语法是在类名的后面加括号,写入被继承的父类。
例如:class Student(Person):
这样,Student类(称作子类)就继承了Person类(称为父类),子类也自动拥有了父类的成员变量和方法,继而可以对父类的方法进行修改(即方法重写),还可以添加特属于子类的新方法。
如上,就是具体的类继承例子,注意super的用法,它是调用父类的构造函数,且传入的参数很特别,是子类的名称+self关键字,其实super主要是用来多继承的,单继继承的时候完全可以直接使用类名调用父类方法。
不过,由于Python中类的继承用的并不多,何况是多继承!所以可以了解一下,用到的时候再查资料也成!
另外,上面还展示了父类方法go_to_shcool的重写。
类的方法关于类的方法,知识点还是挺多的,首先:
私有方法:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。比如:
同理,两个下划线开头的成员变量也是私有的,称私有属性,只能在类内部调用。
另外,类还有一些专有方法,常见的如下:
使用dir()函数可以查看类和对象的所有属性与方法。
最后,我们来说一下类的静态方法(时常会用到)。何为静态,就是不需要创建对象,直接使用类名调用即可。
对应的,还有一种使用不多的类方法,它传递的参数是类,也就是class,在一般使用中参数为cls,这个cls和self的地位一致,不过self代表的是实例化后的对象,cls是代表的类本身。
定义了一个类TestMethod,它继承自基类object(其实,默认就是这样,所有类都继承自object,不用写都行)
定义了常规方法foo、静态方法static_foo、类方法class_foo,注意他们上面的@开头的声明,这是Python中的装饰器,具体知识点不在这里讨论,不过见名知意,一个代表静态,一个代表类方法。
然后我们执行起来
可以看到执行结果为:
其中要说明的是,静态方法和类方法都可以直接使用类名来调用。
就分享这么多,希望读者有所收获!谢谢!
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有