Python类与对象

  1. 调用类方法:
    class Fruit:
        def __init__(self):
            self.__color="rad"
    if __name__ == "__main__":
       apple=Fruit()
       print(apple._Fruit__color

     

  2. self有无的问题(指的是对象本身)
  3. 所以,从静态方法的使用中可以看出,我们不会访问到 class 本身 – 它基本上只是一个函数,在语法上就像一个方法一样,但是没有访问对象和它的内部(字段和其他方法),相反 classmethod 会访问 cls, instancemethod 会访问 self。
  4. _init__()是python的一个构造方法,在定义类时,用于初始化的一些操作;它能实现的功能及原理相对来讲也是比较简单一点,就是在实例化该类时,自动执行__init__()方法定义的内容;但是注意__init__()一般不用户返回return;
  5. __call__()方法能够让类的实例对象,像函数一样被调用;
    >>> 
    >>> class A(object):
        def __call__(self, x):
            print '__call__ called, print x: ', x
    
            
    >>> 
    >>> a = A()
    >>> a('123')
    __call__ called, print x:  123
    >>>

    看a('123')这是函数的调用方法,这里a实际上是类对象A的实例对象,实例对象能想函数一样传参并被调用,就是__call__()方法的功能;

  6. 如果__new__()和__init__()函数时类的构造函数(即在类实例化时自动执行函数中定义的内容),那么__del__()是类的析构函数,是python垃圾回收机制的实际应用,当类的所有引用都被删除后,该类就会被系统从内存中删除,注意是所有的引用都被删除哦,而不是每一次删除;将D()实例化对象赋值给d,后d2,d3都是指向D()的这次实例化对象,删除d和d2的引用都不会触发__del__()函数,最后一个d3的引用被删除,就会触发__del__(),此时D()的这一次实例化的对象就被清除;
  7. list1.append(Geese)即可连续创建类的对象
  8. 定义空函数用pass代替未完成代码
  9. 所以,if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
  10. 内部类的调用
    class MyOuter:
        age=18
        def __init__(self,name):
            self.name=name
        @classmethod
        def outer_class_method(cls):
            print('我是外部类的类方法')
    
        class MyInner:
            def __init__(self,inner_name):
                self.inner_name=inner_name
            def inner_method(self):
                print('我是内部类的对象方法')
                MyOuter.outer_class_method()
    
    out=MyOuter('lqz')
    inner=out.MyInner('lqz_inner')
    inner.inner_method()

     

  11. Python的format函数使用详解                     https://blog.csdn.net/it_python/article/details/81037078

posted on 2019-09-07 19:33  ybl20000418  阅读(110)  评论(0编辑  收藏  举报

导航