小编use*_*038的帖子

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

我现在正在学习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)

python oop methods

2
推荐指数
1
解决办法
1188
查看次数

Python新手:面向对象编程的难题

  1. 这两个类声明有什么区别?"对象"做什么?

    class className(object):
        pass 
    
    class className:
        pass 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行以下代码时,为什么会出现此错误:"不带参数(给定1个)"

    class Hobbs():
        def represent():
            print "Hobbs represent!"
        represent = classmethod(represent)
    
    Hobbs.represent()   
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为什么"Foo.class_foo()"没有给出错误,即使我没有将参数传递给函数.

    class Foo(object):
        @staticmethod
        def static_foo():
        print "static method"
        @classmethod
        def class_foo(cls):
            print "Class method. Automatically passed the class: %s" % cls      
    Foo.static_foo()
    Foo.class_foo()
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行以下代码时,为什么会出现此错误?

    class Foo(object):  
        def static_foo():
            print "static method"
            static_foo = staticmethod(static_foo)
        def class_foo(cls):
                print "Class method. Automatically passed the class: %s" % cls
        class_foo = classmethod(class_foo)  
    Foo.static_foo()
    Foo.class_foo()
    
    Run Code Online (Sandbox Code Playgroud)

"TypeError:unbound方法static_foo()必须使用Foo实例作为第一个参数调用(没有取而代之)"

python oop

1
推荐指数
1
解决办法
231
查看次数

标签 统计

oop ×2

python ×2

methods ×1