• python,类和对象(二),self 、__init__(self,param[,param...])、__private(私有变量)


      当我们在类中定义方法的时候,总会看到会第一个参数总是self,是的这个是python的一个语法,他相当于这个对象的指针。

    class Dog():
        def setName(self,name):
            self.name = name
        def callName(self):
            print("hello",self.name)
    #-----------------输出
     
    >>> d = Dog()
    >>> t = Dog()
    >>> d.setName("didi")
    >>> t.setName("tonny")
    >>> d.callName()
    hello didi
    >>> t.callName()
    hello tonny
    >>> 

      构造函数__init__(self,param[,param...]),当我们在初始化的时候需要给类内部某些变量进行赋值的时候可以用到

    class Cat():
        name="tom"
        def __init__(self,name):
            print("未给定初始值的名字:",self.name)
            self.name = name
            print("名字:",self.name)
    #当我们不给予初始值的时候会报错
    >>> c = Cat()
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        c = Cat()
    TypeError: __init__() missing 1 required positional argument: 'name'
    #当我们给予初始值的时候。
    >>> c = Cat("jerry")
    未给定初始值的名字: tom #由于默认是tom,所以第一次输出时就是tom
    名字: jerry
    >>> 

      __private(私有变量),在Python中一般我们声明的都是公共属性,但是有时候要设置一个属性或者方法为私有方法的时候那么可以通过在属性名称前加两个_来进行声明,这样这个私有属性在外部就访问不到了。如:

    class Cat():
        name="tom" #共有属性
        __no = "001" #私有属性
        def __init__(self,name):
            print("未给定初始值的名字:",self.name)
            self.name = name
            print("名字:",self.name)
            print("编号:",self.__no)
    #初始化对象
    >>> c =Cat("jerry")
    未给定初始值的名字: tom
    名字: jerry
    编号: 001
    
    #当我们试图调用私有属性的时候会报错
    >>> c.__no
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        c.__no
    AttributeError: 'Cat' object has no attribute '__no'
    
    #当我们调用共有属性的时候直接就成功了
    >>> c.name
    'jerry'
    >>> 

      但是需要注意的是,在python中私有其实也只能说是“伪私有”,因为我们还是可以通过另一种方式进行访问,也许您已经猜到了:

    #通过_Cat__no就可以访问到这个私有方法
    >>> c._Cat__no
    '001'
    >>> 
  • 相关阅读:
    lab anycast rp
    激光 & 激光器
    管道机器人结构设计及控制系统搭建
    自动开关灯装置
    基于MATLAB步态算法仿真的六足仿生机器人
    蓝牙AT模式
    语音识别LD3320
    蓝牙模块设置
    6红外遥控程序
    62、如何消除碎片文件
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8698009.html
Copyright © 2020-2023  润新知