python入门——P37类和对象:面向对象编程

self是什么

class相当于房子图纸,每个对象是参照图纸建立的实际的房子,self相当于每一栋房子的门牌号,在下面这段代码里,每个对象都是调用了自己那栋房子里的方法,就是因为self
tips:在方法里,self必须是第一个

class Build():
    def setname(self,name):
        self.name = name
    def call(self):
        print("your name is %s" % self.name)

building1 = Build()
building1.setname("white house")

building2 = Build()
building2.setname("black house")

building1.call()
building2.call()

python的魔法方法

如果你的对象实现了魔法方法中的某一个,这个魔法方法就会在特殊的情况下被python所调用
tips:此类魔法方法会被双下滑线所包围

class Build():
    def setname(self,name):
        self.name = name
    def call(self):
        print("your name is %s" % self.name)

building1 = Build()
building1.setname("white house")

building2 = Build()
building2.setname("black house")

building1.call()
building2.call()

class Build():
    def __init__(self,num): #redefine class make it add a parameter
        self.num = num
    def kick(self):
        print("your num is %s" % self.num)

building3 = Build(3) # new object
building3.kick() # call method

公有和私有

对象的属性和方法都是公有的,在python中定义私有变量只要在变量名或函数名前加“__”两个下划线,那么这个变量或函数就会变成私有的了,例子如下

class person():
    name = "carl"

a = person()
print(a.name)
carl
class person():
    __name = "carl"

a = person()
print(a.name)
AttributeError: 'person' object has no attribute 'name'

想要调用则需在类内进行调用,代码如下

class person():
    __name = "carl"
    def kick(self):
        print("your name is %s" % self.__name)
        return "finish"
a = person()
print(a.kick())
your name is carl
finish

但其实python的私有只是伪私有,也可以直接通过别的方法进行调用

class person():
    __name = "carl"

a = person()
print(a._person__name)
carl
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值