zoukankan      html  css  js  c++  java
  • 类的特殊成员

    1.__doc__ 表示类的描述信息

    class Food(object):
        "定义一个食物类"
    
        pass
    
    print(Food.__doc__)
    
    #输出
    
    定义一个食物类
    

      

    2.__module__ 和 __class__

    __module__ 表示当前操作对象在哪个模块

    __class__    表示当前操作对象的类是什么

    class A(object):
    
        def __init__(self, name):
            self.name = name
    

      

    from local.obj import A
    
    a = A('bigberg')
    print(a.__module__)
    print(a.__class__)
    
    # 输出
    local.obj                       # local.obj , 输出模块
    <class 'local.obj.A'>      # local.obj.A , 输出类
    

      

    3. __init__ 构造方法

    通过类创建对象时,自动触发执行

    class Person(object):
    
        country = 'CN'   # 公有属性
    
        def __init__(self, name, age, gender, province):
            self.name = name
            self.age = age
            self. gender = gender
            self.province = province
    
    p = Person('bigberg', 22, 'M', 'zhejiang')
    

      

    4. __del__ 析构方法

    当对象在内存中被释放时,自动触发执行,是程序自动执行的不需要人为参与

    注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

    class Person(object):
    
        country = 'CN'
    
        def __init__(self, name, age, gender, province):
            self.name = name
            self.age = age
            self. gender = gender
            self.province = province
    
        def __del__(self):
            print("该对象已经被删除!")
    
    p = Person('bigberg', 22, 'M', 'zhejiang')
    print(p.name)
    del p
    print(p.age)
    
    # 输出
    bigberg
    该对象已经被删除!
    Traceback (most recent call last):
      File "G:/python/untitled/study6/类的特殊成员.py", line 34, in <module>
        print(p.age)
    NameError: name 'p' is not defined
    

      

    5.__dict__ 类或对象中的所有成员

    把类中的成员以字典的形式打印出来

     1 class Person(object):
     2 
     3     country = 'CN'
     4 
     5     def __init__(self, name, age, gender, province):
     6         self.name = name
     7         self.age = age
     8         self. gender = gender
     9         self.province = province
    10 
    11     def speak(self, language):
    12         print("%s mother language is %s" % (self.name, language))
    13 
    14 
    15 p = Person('bigberg', 22, 'M', 'zhejiang')
    16 
    17 # 获取类的成员,即:构造函数的属性
    18 print(Person.__dict__)
    19 
    20 #输出: {'speak': <function Person.speak at 0x0000025CCBACE510>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__doc__': None, '__init__': <function Person.__init__ at 0x0000025CCBACE488>, 'country': 'CN', '__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Person' objects>}
    21 
    22 
    23 # 获取对象 p 的成员
    24 print(p.__dict__)
    25 
    26 #输出: {'name': 'bigberg', 'province': 'zhejiang', 'gender': 'M', 'age': 22}
    View Code

    6.__call__ 对象或类后面加括号,触发执行

    class Person(object):
    
        def __init__(self):
            pass
    
        def __call__(self, *args, **kwargs):
            print('hello,world')
    
    
    p = Person()    # 执行 __init__
    p()                  # 执行 __call__
    
    # 输出
    
    hello,world
    

      

    7.__str__ 如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

     1 class Person(object):
     2 
     3     def __init__(self, name):
     4         self.name = name
     5 
     6     def __call__(self, *args, **kwargs):
     7         print('hello,world')
     8 
     9     def __str__(self):
    10         return "It's a good day."
    11 
    12     def speak(self):
    13         return "%s is giving a speech." % self.name
    14 
    15 p = Person('bigberg')
    16 p.speak()
    17 print(p)
    18 
    19 #输出
    20 It's a good day.
    View Code
  • 相关阅读:
    小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
    这个饭店每天只卖一道菜,月入百万?
    夫妻合力建大棚,种植辣椒和番茄,从此走上致富路
    下岗工人创业做办公设备,他将业务做的蒸蒸日上
    三十而立的他开始创业,打造旗舰网店,达到月销30万的传奇
    不断在创业路上寻找突破,他开店多家,没想到公司还上市了
    带着梦想和坚强,她收获了80后创业的广阔舞台,网站实现营利
    22岁开始创业,她把集团开到23家分店,营业额高达20亿元
    windows下git commit使用gvim编辑器
    windows下git commit使用gvim编辑器
  • 原文地址:https://www.cnblogs.com/bigberg/p/7200983.html
Copyright © 2011-2022 走看看