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'
>>> 

 

转载于:https://www.cnblogs.com/pengpengzhang/p/8698009.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值