实现这样的属性需要您为对象定义属性。您在那里所做的是定义一个名为 Comment 的类,但您没有为它的对象定义任何属性,而是为类本身定义它们。
让我用一个小例子来演示:
class ExampleClass:
name = "Example Object"
a = ExampleClass() # Init new instance of ExampleClass
print(a.name) # a doesn't own an attribute called "name"
print(ExampleClass.name) # --> "Example Object"
在上面的例子中,我定义了 classExampleClass
并给它一个name
带有 value的变量Example Object
。之后,我创建了一个 object a = ExampleClass()
,但是它没有获得 name 属性,因为该属性是为类本身定义的,而不是为它的对象定义的。
要解决此问题,您在__init__
-method 中定义名称,每当创建该类的对象时都会调用该名称。
class ExampleClass:
def __init__(self):
self.name = "Example Class"
a = ExampleClass() # Init new instance of ExampleClass
print(a.name) # --> "Example Class"
print(ExampleClass.name) # --> ERROR: Exampleclass.name doesn't exist
在那里我ExampleClass
再次定义了,但我也__init__
为它定义了方法。Init 方法只接受一个参数,self
,该参数将自动传递给函数。它是正在创建的对象。然后我设置self.name = "Example Class"
,因为 self 是对象本身,我们设置对象的属性name
。
创建属性
要为您的属性实现 setter 和 getter,请添加以下内容:
class ExampleClass:
def __init__(self):
self.name = "Example Class"
@property
def name(self):
if not self._name:
pass #blabla code here
return self._name
@name.setter
def name(self, value):
#blabla more code
self._name = value
此外,您还应该编辑__init__
方法以name
作为参数。
def __init__(self, name="Example Object"):
self.name = name