【发布时间】:2016-10-22 03:16:26
【问题描述】:
我想在定义它的同一个类中使用一个基本函数(方法)。
我不知道为什么,但它与self 有关系。
这行得通:
class What(object):
def worksOnlyOutside(self, a):
print a ** 2
def worksOnlyInside(b):
print b ** 3
worksOnlyInside(2)
#prints out 8
What().worksOnlyOutside(3)
#prints out 9
这不起作用:
class What(object):
def worksOnlyOutside(self, a):
print a ** 2
def worksOnlyInside(b):
print b ** 3
worksOnlyOutside(2)
#prints out "TypeError: worksOnlyOutside() takes exactly 2 arguments (1 given)"
What().worksOnlyInside(3)
#prints out "TypeError: worksOnlyInside() takes exactly 1 argument (2 given)"
据我了解,如果我希望它作为类外的实例,我需要一个参数self。此外,要在内部使用它,我需要跳过提供 self 作为参数。
底线:如果我想要一个既可以在其类内部使用,又可以在外部作为该类的属性调用的方法,我该怎么办?
类Basic Maths 有一个方法squared。我很可能在课堂内外都需要它,因为平方整数是你经常做的事情。除了定义两种不同的方法外,还必须有另一种选择 - 一种带有self 用于外部使用,另一种没有它用于内部使用。
谢谢大家。
【问题讨论】:
-
您的worksOnlyOutside 代码应该是创建类方法的正确代码。要在类中调用方法,请使用 self.worksOnlyOutside(2)
标签: python class methods instance self