请纠正我,如果我没有正确理解您要查找的内容,我可以相应地调整答案,但是从我得到的信息来看,您要查找的是类和实例属性以及它们之间的区别:
class A:
filepath = None
def __init__(self, name):
self.name = name
A.filepath = "/path/to/original/file"
a = A("Alice")
print(a.filepath)
a.filepath = "/path/to/another/file"
print(a.filepath)
b = A("Bob")
print(b.filepath)
A
(注意:在python3中,所有类都是新样式的,我认为这是继承自
object
filepath
. 严格来说,这是没有必要的,但如果这是接口的一部分。。。当然,您也可以直接在类定义中指定第一个初始默认值。
'/path/to/original/file'
去吧。在这一点上,我们创建和实例
a
班级
当我们进入它的
文件路径
属性,我们得到class属性的值。然后我们为实例属性指定一个不同的值(
a.filepath
A.filepath
这也是我们看到的新创建的实例
b
.
不过,要注意,将对类和实例属性(同名)的赋值混合在一起可能会导致混淆,并可能导致意外行为。考虑一下:
A.filepath = "/path/to/original/file"
a = A("Alice")
a.filepath = "/path/to/another/file"
b = A("Bob") # b.filepath is "/path/to/original/file"
A.filepath = "/third/file"
c = A("Carl")
"/path/to/another/file"
b.filepath
和
c.filepath
是“/第三个/文件”,可能是我们想要的,也可能不是
b、 文件路径
事实就是这样。
class A:
default_filepath = "/path/to/original/file"
def __init__(self, name):
self.filepath = self.default_filepath
self.name = name
a = A("Alice")
a.filepath = "/path/to/another/file"
b = A("Bob")
A.default_filepath = "/third/file"
c = A("Carl")
班级有一个
default_filepath
属性化,用于分配给每个实例
self.filepath
a.filepath
b.filepath
c.filepath
现在的值为:
/path/to/another/file
/path/to/original/file
/third/file