python类实现问题

时间:2014-04-20 01:08:10

标签: python class

主要课程:

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()

大家好!

我只是想学习班级基础知识,但却遇到了一些麻烦。希望你们能帮忙。在此先感谢:)

  1. 私有变量究竟是什么?我读到了它,人们说它不能在课外访问。好!但是这意味着什么呢?
  2. 私人数据是否与DATA HIDING相同?
  3. 究竟是什么样的自我?我也读过这个,但是从以前的python答案中无法理解。我认为self是在课堂上的每个def语句之后编写的。
  4. 再次感谢!干杯!

1 个答案:

答案 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是作为第一个参数传递给方法的实例。