我现在正在学习Python OOP,但在下面的代码中我有点困惑。在
问题:
def __init__(self, radius=1):
参数/属性“radius=1”的确切含义是什么?
为什么不叫“半径”?
方法area()没有参数/属性“radius”。 它的“半径”是从哪里来的? 它怎么知道半径是5?在
class Circle:
pi = 3.141592
def __init__(self, radius=1):
self.radius = radius
def area(self):
return self.radius * self.radius * Circle.pi
def setRadius(self, radius):
self.radius = radius
def getRadius(self):
return self.radius
c = Circle()
c.setRadius(5)
还有
在下面的代码中,为什么括号中缺少属性/参数name
?
为什么不是这样写的:def __init__(self, name)
还有def getName(self, name)
?在
class Methods:
def __init__(self):
self.name = 'Methods'
def getName(self):
return self.name
这是初始化类变量的默认值设置范围。这个是为了避免出现任何垃圾输出,以防某些用户在
^{pr2}$c = Circle()
之后调用c.Area()
。在在}。在
self.name = 'Methods'
行中,您正在创建一个初始化为字符串值Methods
的变量{为类作用域定义了
self.name
。您可以在类的任何地方获取和设置它的值。在def method(self, argument=value):
语法定义了一个带有默认值的关键字参数。使用该参数现在是可选的,如果不指定,则使用默认值。在您的示例中,这意味着radius
被设置为1
。在在一个方法中,使用
self
参数引用实例。name
和radius
值作为属性(self.name = 'Methods'
和self.radius = radius
)存储在上,稍后可以通过引用该命名属性(return self.name
,return self.radius * self.radius * Circle.pi
)进行检索。在我真诚地建议你遵循Python tutorial,它将解释所有这些和更多。在
语法
radius = 1
指定了一个参数“radius”,其默认值为1
:请注意,在python中存在更多种类的参数:位置参数和关键字参数,或两者兼而有之。在
通常可以使用位置符号和关键字来指定参数:
self
参数用于传递调用方法的实例。您可以将self
看作是Java的this
。但必须始终使用它来访问实例属性/方法。你不能只调用area()
,你必须说self.area()
。在当您
self.attribute = 1
时,您将使用值1
创建一个新属性attribute
,并将其分配给实例self
。因此在area()
方法中,self.radius
引用self
实例的radius
属性。在__init__
方法是一种特殊的方法。它类似于构造器。 在实例化类时调用它。Python有很多这样的“特殊方法”,例如在使用操作符+
时调用方法__add__(self, other)
。在相关问题 更多 >
编程相关推荐