如何使任何方法在Python中充当_init__?

2024-09-20 22:53:35 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行类似于:

class Compliment():
   def __init__(self):
      self.Hello = "HI"
   def Bye(self):
      self.bye = "BYE"
print(Compliment().Hello)
print(Compliment().bye)

我得到:`

AttributeError: 'Compliment' object has no attribute 'bye'
HI

但是我想在其他方法中创建属性,并使方法“init”对此毫无用处,这可能吗?如果是,我怎么能做那样的事


Tags: 方法selfhelloobjectinitdefhiclass
2条回答
class Compliment():
   def __init__(self):
      self.Hello = "HI"

   @property
   def bye(self):
      return "BYE"
> print(Compliment().Hello)
HI
> print(Compliment().bye)
BYE

python类属性装饰器在初始化时执行。
它可以自动生成和使用,而无需运行单独的函数

您可以在任何地方创建属性。代码中的错误是,在尝试打印仅在该方法中创建的属性之前,没有调用方法Bye。相反,试试看

prop = Compliment()
print(prop.Hello)
prop.Bye()
print(prop.bye)

回答您的直接问题:不,您不能使__init__对创建属性毫无用处。您不必这样使用它,但不能禁用它:__init__是一种语言定义的方法

相关问题 更多 >

    热门问题