在国外建网站方便吗,河南省建设厅网站考试成绩查询,品牌推广工作职责,M97 网站建设网络公司整站源码在学习python代码中#xff0c;你是否看到过Class这个词#xff1f;你是否见过__init__这样的代码#xff1f;有的书里把这部分内容讲的太过“专业”#xff0c;导致我看了也看不懂。直到看Python Crash Course这本书关于这部分讲解#xff0c;才明白什么是Class。其实如果…在学习python代码中你是否看到过Class这个词你是否见过__init__这样的代码有的书里把这部分内容讲的太过“专业”导致我看了也看不懂。直到看Python Crash Course这本书关于这部分讲解才明白什么是Class。其实如果之前的function能理解的话学习Class也不是非常难。这篇笔记就是记录有关class的基础结构和基本的使用(更多内容请阅读该书第九章)你可以使用“类”为任何东西建立模型。让我们从编写一个简单的“类”开始这个类的名字叫Dog它表示一条狗——不是特定的一条狗而是任意一条狗。对大多数宠物狗他们都有名字和年龄。我们还知道大多数狗都会坐着和打滚。这两条信息(name和age)和这两种行为(sit和roll over)将在这个例子里因为它们对大多数狗来说都很常见。这个类将告诉Python如何创建一个表示狗的对象。编写完类之后我们将使用它来创建单独的实例(instance)每个实例代表一个特定的dog。(一)创建一个class从类创建的每个实例将存储一个名称name和一个年龄age我们将给每只狗提供sit()和roll_over():1) class Dog:2) A simple attempt to model a dog.3) def __init__(self, name, age):Initialize name and age attributes.4) self.name nameself.age age5) def sit(self):Simulate a dog sitting in response to a command.print(f{self.name} is now sitting.)def roll_over(self):Simulate rolling over in response to a command.print(f{self.name} rolled over!)在1)处我们定义了一个名为Dog的类。按照惯例大写的名称在Python中指代类。在类定义中没有括号因为我们是从头创建这个类。在2)处我们写一个文档字符串(docstring)来描述这个类做什么。(1) __init__ ()方法作为类的一部分的function就是方法(method)。你学过的function知识也适用于方法。目前唯一的实际区别是我们调用方法的方式。在3)处的__init__()方法是一个特殊的method每当我们基于Dog类创建一个新实例时Python都会自动运行该方法。这个方法有两个前导下划线和两个后置下划线这个惯例有助于防止Python的默认方法名与method名冲突。请确保在__init__()的两边都使用两个下划线。我们定义__init__()方法有三个参数self、name和age。self参数在方法定义中是必需的而且它必须在其他参数之前出现。它必须包含在定义中因为当Python在稍后调用该方法(创建Dog实例)时将自动传递self参数。每个与实例关联的方法调用都会自动传递self。当创建Dog的实例时Python将从Dog类调用__init__()方法。将name和age作为参数传递给Dog()self会自动传递所以我们不需要传递它。每当我们想要从Dog类创建一个实例时我们只需提供最后两个参数的值name和age。在4)处定义的两个变量都有前缀self。任何带self前缀的变量都可以用于类中的每个方法而且我们还能够通过从类创建的任何实例访问这些变量。self.name name接受与参数名相关联的值并将其赋值给变量名然后将变量名附加到正在创建的实例上。self.age age也是一样的。可以通过这样的实例访问的变量称为属性(attributes)。在5)处这个Dog类还定义了另外两个方法sit()和roll_over() 。因为这些方法不需要额外的信息来运行所以我们定义它们只有一个参数self。我们稍后创建的实例能够访问这些方法。目前sit()和roll_over()只是打印信息。但是这个概念可以扩展到现实情况如果这个类是一个真实的电脑游戏的一部分那么这些方法将包含让动画狗坐下和翻滚的代码。(二)从class里创建一个实例可以将类看作是一组关于如何创建实例的指令。Dog类是一组指令告诉Python如何创建代表特定狗的单个实例。让我们用一个实例来代表一只特定的狗(实际上就是指定参数的值并且调用methods):my_dog Dog(Willie, 6)print(fMy dogs name is {my_dog.name}.)print(fMy dog is {my_dog.age} years old.)我们在这里使用的Dog类是我们在上面刚刚编写的类(class)。这里我们告诉python创建一只名叫“Willie”的6岁狗。当Python读取这一行时它调用Dog中的__init__()方法参数为Willie和6。__init__()方法创建一个表示这只特定狗的实例并使用我们提供的值设置name和age属性。然后Python返回一个表示这条狗的实例。我们将该实例赋值给变量my_dog。这里的命名的惯例很有帮助我们通常可以假设大写的名字(如Dog)指的是一个类小写的名字(如my_dog)指的是从一个类创建的单个实例。运行后的结果My dogs name is Willie.My dog is 6 years old.(1)访问attributes如果你要访问一个实例里的attributes在上面的例子里就是name 和agemy_dog.name得到的结果是Willie点符号在Python中经常使用。这个语法演示了Python如何查找属性的值。在这里Python查看my_dog实例然后找到与my_dog相关联的属性名。这个属性与Dog类中的self.name相同。(2)调用methods在创建了一个实例后我们可以使用点符号来调用Dog类里的任何methodsmy_dog.sit()my_dog.roll_over()要调用一个方法请给出实例的名称(在本例中为my_dog)和你想要调用的方法并用点分隔。当Python读取my_dog.sit()时它在Dog类中寻找sit()方法并运行该代码。Python以同样的方式解释my_dog.roll_over()行。所以运行后的结果是Willie is now sitting.Willie rolled over!