多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 7.1 【基础】类的理解与使用 ## 1. 通俗理解类 类(英文名 class),是具有相同特性(属性)和行为(方法)的对象(实例)的抽象模板。 从定义上来理解类,是一件非常吃力的事情,特别是对那些没有任何基础的初学者。 下面我举例来说明类中一些关键术语都是什么意思: - 类:动物属于一个类,植物属于一个类 - 实例:猫和狗都属于同一类,就是动物类,那么猫和狗是动物类的实例/对象。 - 属性:类中所有的变量,都叫做属性。 - 方法:类中的所有函数,都叫做方法。 类与对象的关系就如模具和铸件的关系,类的实例化的结果就是对象,而对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为(方法)的对象。 ## 2. 如何定义类? 定义一个类,使用的是 class 关键字 下边我定义了一个 Animal 的类 ```python class Animal: age = 0 def __init__(self, name): self.name = name def run(self): print(f"{self.name} 跑起来了") ``` 其中 - `Animal` 是类名 - `__init__` 是构造函数,用于实例的初始化 - `self.name` 是实例属性,`age` 是类属性 - `run` 是方法,第一个参数 self 是什么意思呢?这个咱后面再讲。 除了上面这种写法外 ```python # 第一种写法 class Animal: ... ``` 还有另外两种写法,与之是等价的 ```python # 第二种写法 class Animal(): ... # 第二种写法 class Animal(object): ... ``` 因为在 Python 3 中,无论你是否显示继承自 object,Python 解释器都会默认你继承 object ,这是新式类的写法,与之对应的是 Python 2 的经典类写法(Python 2 已经远去,无需要再了解经典类写法)。 ## 3. 如何实例化? 定义了类之后,就可以通过下边的写法实例化它,并访问属性,调用方法 ```python >>> class Animal: ... def __init__(self, name): ... self.name = name ... def run(self): ... print(f"{self.name} 跑起来了") ... >>> >>> dog=Animal(name="小黑") # 实例化出 dog 对象 ``` 在实例化时传入的参数 `name="小黑"` 传进入到构造函数 `__init__` 中,最终赋值 `self.name` 成为实例的属性。 ## 4. 方法的调用 实例化成对象后,如果访问实例属性,可以用 `对象.属性名` 进行访问。 ```python >>> dog=Animal(name="小黑") >>> dog.name # 访问属性 '小黑' ``` 如果要调用方法,有两种方法 1. 通过 `对象.方法名`:使用这种方法,在定义方法时 self 就代表对象(dog),调用时无需再传入了。 ```python >>> dog=Animal(name="小黑") >>> dog.run() # 调用方法 小黑 跑起来了 ``` 2. 通过 `类.方法名`:使用这种方法,self 参数要传入实例对象 ```python >>> dog=Animal(name="小黑") >>> Animal.run(dog) 小黑 跑起来了 ```