我现在正在学习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)这两个类声明有什么区别?"对象"做什么?
class className(object):
pass
class className:
pass
Run Code Online (Sandbox Code Playgroud)运行以下代码时,为什么会出现此错误:"不带参数(给定1个)"
class Hobbs():
def represent():
print "Hobbs represent!"
represent = classmethod(represent)
Hobbs.represent()
Run Code Online (Sandbox Code Playgroud)为什么"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)运行以下代码时,为什么会出现此错误?
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实例作为第一个参数调用(没有取而代之)"