构造将在类方法中调用的私有方法的正确方法是什么?有一种私有类方法吗?
class Foo:
def _bar(self):
# do something
@classmethod
def bar(cls):
cls._bar()
>> Foo.bar()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in bar
TypeError: unbound method _bar() must be called with Foo instance as first argument (got nothing instead)
答案 0 :(得分:0)
如果您需要在类方法中引用实例(我看不到为什么),只需将其作为参数传递即可:
class Foo:
def _bar(self):
pass
@classmethod
def bar(cls, inst):
cls._bar(inst)
但是也许_bar
实际上应该是在classmethod
中被调用的staticmethod
?
class Foo:
@staticmethod
def _bar():
pass
@classmethod
def bar(cls):
cls._bar()
正如评论中指出的那样,Python没有私有方法,也没有属性。
答案 1 :(得分:-2)
您可以使用名称修饰来创建私有类方法:
class Foo:
@classmethod
def __bar(cls):
print('__bar')
@classmethod
def bar(cls):
cls.__bar()