Python:与OOP中的类,属性和方法混淆

use*_*038 2 python oop methods

我现在正在学习Python OOP,并且与下面代码中的某些内容相混淆.

问题:

  1. def __init__(self, radius=1): 参数/属性"radius = 1"究竟是什么意思?为什么它不被称为"半径"?

  2. 方法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)

也,

  1. 在下面的代码中,为什么name括号中缺少属性/参数?

  2. 为什么不是这样写的: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)

Mar*_*ers 8

def method(self, argument=value):语法定义了一个关键字参数,具有默认值.现在使用该参数是可选的,如果不指定它,则使用默认值.在您的示例中,这意味着radius设置为1.

在方法中,使用self参数引用实例.该nameradius值被存储 self作为属性(self.name = 'Methods'self.radius = radius),并可以在以后通过参照该命名属性(检索return self.name,return self.radius * self.radius * Circle.pi).

我衷心建议您按照Python教程,它将解释所有这些以及更多.

  • 但是如果你想找到一个更适合你需求的产品,可以从http://wiki.python.org/moin/BeginnersGuide开始为你提供丰富的链接. (2认同)