理解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)
原文地址:https://www.cnblogs.com/xuechengeng/p/10413553.html