主要课程:
class circle:
def __init__(self,radius=1):
self.radius=radius
def getArea(self):
return(3.142*self.radius*self.radius)
def getPerimeter(self):
return(2*3.142*self.myradius)
def setradius(self,radius):
if radius>0:
self.__radius=radius
def getRadius(self):
return self.__radius
使用class:
from Circle import circle
def main():
c1=circle()
c1.radius=-1
c2=circle(5)
c3=circle(3)
print(c1.getArea())
print(c2.getArea())
print(c3.getArea())
main()
大家好!
我只是想学习班级基础知识,但却遇到了一些麻烦。希望你们能帮忙。在此先感谢:)
self
是在课堂上的每个def
语句之后编写的。再次感谢!干杯!
答案 0 :(得分:2)
私人变量/数据隐藏/名称管理
Python没有只能从对象中访问的私有实例变量。您无法在Python中强制隐藏数据。按照惯例,Python代码使用单个下划线来表示不被视为公共的名称,但名称仍可在其对象之外访问。但是,您正在使用名称修改(带有两个前导下划线)。名称修改以下列方式替换标识符:
如果self.__radius
是该类的名称,则 self._classname__radius
变为classname
。
然而,即使是受损的名字也可以在课堂外进行访问。由于类名称成为属性名称的一部分,因此错位名称只会降低名称冲突的可能性。
<强>自强>
self
按惯例我们用于实例的名称。所以考虑这个课程:
class Circle(object):
def get_area(self):
pass
该课程为Circle
,我们可以将Circle
的实例分配给这样的变量:
c = Circle() # an instance
现在,如果我们调用get_area
方法,我们可以这样做:
c.get_area() # note the lack of arguments
这相当于以下内容:
Circle.get_area(c) # instance c is now passed in as the first argument of `get_area`, which our method calls self
然后, self
是作为第一个参数传递给方法的实例。