当前位置: 首页 > 面试题库 >

Python-为什么在类中使用“自我”?

卢光誉
2023-03-14
问题内容

这两个类别有何不同?

class A():
    x=3

class B():
    def __init__(self):
        self.x=3

有什么明显的区别吗?


问题答案:

A.x是一个 类变量Bself.x是一个 实例变量

Ax被实例之间共享。

用可以像列表这样修改的东西更容易证明区别:

#!/usr/bin/env python

class A:
    x = []
    def add(self):
        self.x.append(1)

class B:
    def __init__(self):
        self.x = []
    def add(self):
        self.x.append(1)

x = A()
y = A()
x.add()
y.add()
print("A's x:", x.x)

x = B()
y = B()
x.add()
y.add()
print("B's x:", x.x)

输出量

A's x: [1, 1]
B's x: [1]


 类似资料:
  • 问题内容: 我正在学习Python,对于这个类的方法中的访问类变量,我有一个比理论更实际的问题。 例如,我们有: 为什么一定要准确地写,而不仅仅是写?属于类的名称空间,使用它的方法也属于该名称空间。我想念什么?这种风格背后的原理是什么? 在C ++中,您可以编写: 它将起作用! 问题答案: 摘自Python历史:添加对用户定义类的支持: 相反,我决定放弃隐式引用实例变量的想法。诸如C ++之类的语

  • 问题内容: 我已经用python编程了大约两年了。主要是数据资料(熊猫,mpl,numpy),还有自动化脚本和小型Web应用程序。我试图成为一个更好的程序员,并增加我的python知识,而困扰我的一件事是我从未使用过一个类(除了为小型Web应用程序复制随机烧瓶代码外)。我通常理解它们是什么,但是我似乎无法为为什么在一个简单的函数中需要它们的问题而wrap之以鼻。 为了使我的问题更具针对性:我编写了

  • 问题内容: 我有一个很长的单行shell命令,将由Python调用。代码如下: 这些代码有效,但始终会这样抱怨: 根据先前的答案,我需要使用更长的脚本来完成此操作,例如: 我的问题是: (1)“第二种方式”是否会比“第一种方式”慢 (2)如果无论如何我都必须以“第一种方式”写(因为这样写起来更快),如何避免这样的抱怨 (3)我不应该以“第一方式”写作的最令人信服的原因是什么 问题答案: 如果您的输

  • 问题内容: 这是我尝试从中获取数据的示例网页。 http://www.makospearguns.com/product-p/mcffgb.htm xpath取自chrome开发工具,firefox中的firepath也能够找到它,但是使用lxml时,它只会为“ text”返回一个空列表。 使用以下命令打印树文本 显示数据在那里,但是xpath似乎无法找到它。我有什么想念的吗?我尝试使用lxml和

  • 问题内容: 这是一个奇怪的行为。 尝试这个 : 为什么列表不需要全局声明?它们是自动全局的吗? 我发现它真的很奇怪,我大多数时候都使用列表,甚至根本不使用global作为全局… 问题答案: 它不是自动全局的。 但是,和之间存在区别-前者重新绑定了name ,因此需要使用它来防止创建相同名称的本地插槽。在后一种情况下,您只是在修改现有的全局对象,该对象可以通过常规名称查找找到(更改列表条目就像在列表

  • 我已经检查了我的windows10机器上是否安装了python 3.8。我正在尝试安装带有pip的软件包,但终端告诉我,“[pip”不被识别为内部或外部命令、可操作程序或批处理文件。] 我知道3.4以上的Python版本已经预装了pip,那么为什么我会收到这个错误消息呢?