我开始学习python,并已涵盖了基本知识。我现在开始使用类函数,它具有许多__init以及我无法理解的所有内容。谁能解释一下。我正在写我从我所指的书中写的代码
好吧,我尝试阅读有关内容,但没有我能理解的地方。
class Circle1:
def __init__(self, radius):
self,radius = radius
def setRadius(self, newValue):
if newValue >= 0:
self.__radius = newValue
else:
raise ValueError('Value must be positive')
def area(self):
return 3.14159 * (self.__radius ** 2)
class Circle2:
def __init__(self, radius):
self.radius = radius
def __setRadius(self, newValue):
if newValue >= 0:
self.__radius = newValue
else:
raise ValueError("Value must be positive")
radius = property(None, set_Radius)
@property
def area(self):
return 3.14159 * (self.radius ** 2)
答案 0 :(得分:0)
__init__()
函数只是您的类的构造函数。 Python需要选择某种东西作为构造函数,然后选择__init__()
。因此,在您的示例中,如果要创建半径为5的Cirlce1
的实例,您将像这样进行操作:
myCircle = Circle1(5)
我们从未定义过Circle1()
函数,但是我们可以通过使用类似函数的类来构建实例,该类将由于Circle1
函数而返回__init__()
实例。然后,您可以进行诸如更改半径并使用myCircle
获取面积的操作。
__radius
会稍微改变变量的处理方式,但是它将像没有双下划线标头的变量一样工作。如果您想了解有关双下划线标头的更多信息,此问题将提供一个很好的答案:Why do some functions have underscores "__" before and after the function name?
除了解释之外,我还在您的代码中发现了一些问题:
此行:self,radius = radius
应该读为self.radius = radius
现在,您似乎可以交替使用self.radius
和self.__radius
,因为它们是两个单独的变量,因此它们将无法提供所需的功能。