use*_*038 2 python oop methods
我现在正在学习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)
Run Code Online (Sandbox Code Playgroud)也,
在下面的代码中,为什么name括号中缺少属性/参数?
为什么不是这样写的:def __init__(self, name)
和def getName(self, name)?
class Methods:
def __init__(self):
self.name = 'Methods'
def getName(self):
return self.name
Run Code Online (Sandbox Code Playgroud)的def method(self, argument=value):语法定义了一个关键字参数,具有默认值.现在使用该参数是可选的,如果不指定它,则使用默认值.在您的示例中,这意味着radius设置为1.
在方法中,使用self参数引用实例.该name和radius值被存储在 self作为属性(self.name = 'Methods'和self.radius = radius),并可以在以后通过参照该命名属性(检索return self.name,return self.radius * self.radius * Circle.pi).
我衷心建议您按照Python教程,它将解释所有这些以及更多.