小朋友们好,大朋友们好!
我是猫妹,一名爱上Python编程的小学生。
"学而不思则罔": 死记硬背而不思考不理解,就做不到活学活用、融会贯通,即使记忆力再好成绩也不会太好。
“思而不学则殆”:只是善于思考而没有学习的行动,即使逻辑思维能力再强也会因为知识积累的匮乏而限于空想失败。
猫妹觉得,把自己学过的东西记录下来,便是一种思考,很有意思。
什么是面向对象
程序开发分为面向过程开发和面向对象开发。
Python本身是一门面向对象开发语言。
面向对象开发中,最重要的两个概念是类和对象。
举个简单的例子,人是类,每个具体的人是对象。
每个具体的人有属性和方法。
人的属性有:头、手、足等
人的方法有:说话、吃饭、睡觉等
类和对象
类的定义:
class 类名:
属性名=xxx
def 方法名(self):
xxx
使用关键字class定义一个类,类名首字母需要大写。
类一般有属性和方法,属性类似变量,方法类似函数,方法第一个参数是self。
类和实例通过实例化关联起来。
实例化即对象=类()。
可以访问对象的属性和方法,使用对象名.属性名,对象名.方法()。
类是模版,可以实例化不同的对象。
下面三种形式的类定义,实质无区别。
class A:
...
class A():
...
class A(object):
...
构造函数__init__()
构造函数__init__()
构造函数__init__()语法:
class 类名:
def __init__(self,A,B,C):
self.A=xxx
self.B=xxx
self.C=xxx
构造函数就是一个函数,名称是固定的,在类内部定义。
其第一个参数是self,这个和类的方法是一样的。
在构造函数内部,使用self.xxx接收参数,self指向当前对象。
类属性和实例属性
先看个例子:
其中的title属于类属性,name和color属于实例属性。
在类中定义的属性或方法,就是类属性和类方法。
在构造函数中定义的属性或方法,就是实例属性和实例方法。
访问类属性或类方法,一般通过类名.类属性(类名.类方法)访问,不建议使用实例名.类属性(实例名.类方法)。
当类属性和实例属性同名时,实例属性会覆盖类属性。
在实例方法中可以访问类属性,可以类名.属性名或self.__class__.title
大多数情况,只会用到实例属性,什么时候会用到类属性呢?
举个例子:
类方法和实例方法
Python中,可以使用@classmethod来定义一个类方法。
@classmethod
def 方法名(cls):
xxxx
第一个参数是cls,只是一个参数名,可以使用其他,但是建议使用cls。
静态方法
Python中,可以使用@staticmethod来定义一个静态方法。
@staticmethod
def 方法名():
xxxx
静态方法不需要强制传入参数。
类和实例都可以调用静态方法,实际开发中,静态方法用得不多。
继承
在Python中,我们可以把这些相同的部分提取成一个父类,然后让这些子类去“继承”父类。
封装、继承、多态是面向对象设计的三大特性。
class 子类名(父类名):
……
子类Student继承了父类Human,因此子类Student具有了父类的属性和方法。即这里的类属性type和实例方法walk。
因此子类Student的对象s可以直接使用继承而来的s.type和s.walk。
实战一
定义矩形类,构造方法初始化实例属性长宽,定义两个实例方法求周长和面积。
通过类实例化对象,求周长和面积。
实战二
类方法使用笔记:
好了,我们今天就学到这里吧!
我是猫妹,咱们下次见!
领取专属 10元无门槛券
私享最新 技术干货