这里有一个初学者问题!之前我问过这个问题:将CSV记录解析成类的列表,这个问题也在这里得到了更专业的回答:如何避免在实例之间共享类数据?
我了解到,在Python类中,将按对象定义的变量需要在__init__(self)
函数中声明。
因此:
class ClassOne:
def __init__(self, datetime):
self.datetime = datetime
v = []
变量v将为ClassOne
的所有实例保存相同的数据,而对于:
class ClassTwo:
def __init__(self, datetime):
self.datetime = datetime
self.v = []
变量v包含ClassTwo
的每个实例的个人数据。
然而,在Django中(我现在正在学习),我再次看到变量的“正常”(更像C++)行为:
class Post(models.Model):
title = models.CharField(max_length = 255)
在这里,变量
title
存储Post
每个实例的单独数据,尽管没有在__init__
函数中定义。我的基本问题是为什么或如何
title
与各个类对象相关联,而不是像上面ClassOne
中的v
一样对每个类对象都是通用的?如果我理解得正确,这意味着Django类的解释方式与普通Python类不同?然而,这个结论并不make sense...
我希望有人可以帮助我理解这一点。之前我认为,可以使用它的类和程序在Django应用中构建python代码(例如,数据分析或科学模型)成为基于web的服务。如果两个不同类的实现方式不同,那么这将非常困难!
可能已经在其他地方回答过了。我不太熟悉Django jango,所以不知道要搜索什么。
ClassTwo.__init__
中设置self.v = []
;只有v
是函数局部变量。 - Martijn Pieterstitle
和v
被处理的方式不同? - Swift ArrowPost.title
已经存在了。你可以枚举Post
类上的所有属性,列表中将包括title
。这就是重点。 - Martijn Pieterstitle
属性也是共享的,但实例也有一个title
属性。 - Martijn Pieters