实现属性一样,需要你定义属性为对象。你在那里做的是定义一个名为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"
在上面的例子中,我定义ExampleClass
类,并给它一个变量name
与价值Example Object
。之后,我创建了一个对象a = ExampleClass()
,但它没有获得name属性,因为该属性是为类本身定义的,而不是它的对象。
若要解决此问题,您可以在__init__
- 方法中定义名称,只要该类的对象被创建,该方法就会被调用。
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__
方法。初始化方法只需要一个参数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
您提到authorID只是一次,它不会再出现。 –
@PaulC应该是纪念 – Snowman
这是你的全班上课吗? – Michael0x2a