python类有什么用?

时间:2013-07-12 14:46:27

标签: python class copy alias

似乎他们唯一的价值就是存储属性。即便如此,这些都无法改变,或者所有实例都会反映出这些变化!

如果我在这里上课:

# Vertex
class Vertex:
   label = str()
   ID = int()
   outEdges = list()
   inEdges = list()

制作一个新的顶点对象:

v = Vertex()

并添加到v的outedges:

v.outEdges.append(1)

然后Vertex.outEdges不再是空列表,而是包含1。

那么我应该如何使用python类?有了复制模块吗?完全没有?

3 个答案:

答案 0 :(得分:6)

您声明的属性是类级别的,并且由类的所有实例共享。如果希望这些值特定于实例,则需要使用正确的初始化程序/构造函数:

# Vertex
class Vertex:
   def __init__(self):
      self.label = str()
      self.ID = int()
      self.outEdges = list()
      self.inEdges = list()

您还可以在类上创建方法,而不仅仅是属性。

class Vertex:
   # def __init__(self): ...

   def allEdges(self):
      return self.outEdges + self.inEdges

答案 1 :(得分:2)

如果你想要不同的班级实例,你需要一个instantiation method

class Vertex:
    def __init__(self):
        self.label = str()
        ....

答案 2 :(得分:1)

  

[..]更改会反映在所有实例中!

如果像您一样定义属性,它们将表现为在给定类的所有实例之间共享的静态属性。

如果你想获得不共享属性值的给定类的实例,你需要像这样定义它:

# Vertex
class Vertex:
    def __init__(self):
        self.label = str()
        self.ID = int()
        outEdges = list()
        inEdges = list()