理解self与this

理解self与this

  刚开始学习Python的类写法的时候觉得很是麻烦,为什么定义时需要而调用时又不需要,为什么不能内部简化从而减少我们敲击键盘的次数?
你看完这篇文章后就会明白所有的疑问。

self代表类的实例,而非类。

实例来说明

class Test:
    def prt(self):
        print(self)
        print(self.__class__)

t = Test()
t.prt()

 执行结果如下

<__main__.Test object at 0x000000000284E080>
<class '__main__.Test'>

 从上面的例子中可以很明显的看出,self代表的是类的实例。而self.__class__则指向类。

self不必非写成self

  有很多童鞋是先学习别的语言然后学习Python的,所以总觉得self怪怪的,想写成this,可以吗?
当然可以,还是把上面的代码改写一下。

class Test:
    def prt(this):
        print(this)
        print(this.__class__)

t = Test()
t.prt()

 改成this后,运行结果完全一样。

当然,最好还是尊重约定俗成的习惯,使用self。

类或对象的绑定方法默认将self传入

对象的绑定方法调用:
    obj.prt(self)
相当于:对象.对象的绑定方法(第一个self是对象自己,第二个self是别的继承的类等)

 局部变量的使用

# 在方法内使用局部变量,需要用对象来获取,不能直接拿到dic
class
Visit(): dic = {} def __init__(self,history): self.history = history # self 是对象,传入对象,对象.属性 def request_visit(self,request,): ip = request.META.get('REMOTE_ADDR') ctime = time.time() if ip not in self.dic: self.dic[ip] = [ctime,] return True self.history = self.dic.get(ip)

 

posted @ 2019-02-21 16:41 ChuckXue 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值