python中如何定义类?
~~~关注极迭代,和小伙伴一起看↗↗↗
Python是一门面向对象语言,而面向对象的强大在于能够用大家理解的,和我们的世界观比较接近的描述方式来进行编程。
在了解面向对象和类之前,我们先来看一下普通函数是如何定义的。
普通函数
函数是逻辑封装的基础,通过函数的封装,我们能够将复杂的逻辑,通过简单的函数名来调用。
定义一个普通函数也很简单,只需要按以下格式,写入函数名、参数名以及函数的内容即可。
这里是用def关键字定义了一个名为 add的函数,需要传入 x和y两个变量,函数的内容是计算x+y后,进行返回计算结果。
类
类是对现实逻辑和事物的抽象,抽象出属性和行为,就会对应为 类的属性和类的方法。
python中,能够简单的定义出包含了属性和方法的一个类。
如下图:
在这里我们能了解到:
我们用class关键字定义了一个名为 DemoClass的类,
这个类里有一个 属性叫做 name, 它的值是一个空字符串。
同时我们定义了一个构造函数,构造函数的名字是固定约定的,叫做 __init__,在类中的方法都要先传入一个默认参数叫 (self),self是类的默认实例,相当于java里的this关键字。
构造函数能够在类被初始化时调用,为类的实例进行一些自定义的初始化设定。这里我们在构造方法中,将 name的值,由空字符串设为了 Hello。
最后,我们定义了一个叫add的方法,类中的方法与函数基本相同,区别在于,类方法需要增加 self默认参数。
万事具备,我们也就可以使用这个类了。
类实例调用
类是一种定义,也就是说,我们想要用一个类,需要按这个类先创建出实例对象;同一个类是能够创建出很多的实例对象的,这些实例对象的属性值可以各不相同。
这里我们使用DemoClass类,创建出了一个叫 demoObj的实例对象;
然后再用这个实例去调用了类的方法 add,计算 3+2的值,结果存放到了 result 变量里。最后再打印出来。
好了,我们可以看到程序运行的结果了。
看到这里,你是不是已经了解了,如何用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中的装饰器,具体知识点不在这里讨论,不过见名知意,一个代表静态,一个代表类方法。
然后我们执行起来
可以看到执行结果为:
其中要说明的是,静态方法和类方法都可以直接使用类名来调用。
就分享这么多,希望读者有所收获!谢谢!