美文网首页
Python面向对象的特殊成员和修饰符

Python面向对象的特殊成员和修饰符

作者: Donald_32e5 | 来源:发表于2019-03-08 14:15 被阅读0次

一、类成员的修饰符

类的所有成员在Python面向对象的成员组成部分已经详细介绍了,对于每个成员而言,都有两种形式:

  • 公有成员,在任何地方都能访问
  • 私有成员,只有在类的内部才能访问

私有成员和公有成员在定义的时候不同:私有成员命名时,需要在前面加上两个下划线,特殊成员除外(initstrdict

class TestObj:
    def __ init__(self):
          self.name = '公有变量'
          self.__age = '私有变量'  

1、 其中公有静态字段和私有静态字段也是一样,私有的只能在类的内部访问,公有静态在派生类中也可以访问

class C:
    name = '老李'  # 静态公有字段
    __age = '20'    # 静态私有字段

   def get_name(self):
        return C.name

   def get_age(self):
        return C.__age

 
class B(C):
     def show():
           return C.name

     def  show_age():
          return C.__age

C.name   # 类访问
C.__age  # 错误


p = C()
p.get_name()    # 类内部访问
p.get_age()      # 类内部访问成功


o = B()
o.show()          # 派生类访问
o.show_age    # 访问错误   

如果需要强制访问私有变量,可以通过 【对象.类名_私有字段】(o._C__age),不建议强制访问私有成员

二、类的特殊成员

1 、__doc__: 表示类的描述信息

class Test:
    """这里是描述信息"""
    pass

p = Test()
p.__doc__

2、__module__:表示当前操作的对象在哪个模块

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

4、__init__:构造方法,通过类创建对象时,自动触发执行

5、__del__:构造方法,当对象在内存中释放是,自动触发执行,不过Python是高级语言,有自己的一套触发回收机制

6、__call__:对象后面的括号触发执行的

__init__在创建对象是执行,即:对象 = 类()
__call__是是有对象后面的括号触发的,即 对象() 或 类()()

class Test:
    def __init__(self):
          pass

    def __call__(self):
          print("__call__")

p = Test()  # 调用__init__

p()  # 调用__call__

7、__dict__:返回类或对象中的所有成员

8、__str__:如果定义了这个方法,在打印对象时,默认输出改方法的返回值

9、__getotem__、__setitem__、__delitem__:用于索引操作,如字典,以上分别表示获取、设置、删除数据

class Test:
    def __init__(self):
        self.dic = {}

    def __getitem__(self, item):
        if item in self.dic:
            return self.dic[item]
        return None

    def __setitem__(self, key, value):
        self.dic[key] = value

    def __delitem__(self, key):
        del self.dic[key]


p = Test()
p['laoer'] = 12
print(p['laoer'])   # 12 
print(p['laoli'])   # None
del p['laoer'] 
print(p['laoer'])   #None

10、__getslice____setslice____delslice__:用于切片操作,如列表

11、__iter__:用于迭代器,之所以列表、元组、字典可以进行for循环,就是因为类型定义了iter


class Test:
    def __init__(self, list):
        self.dic = list

    def __iter__(self):
        return iter(self.dic)


p = Test([2, 34, 32, 12])
for i in p:
    print(i)

12、其他的特殊成员以后慢慢补充

相关文章

  • Python面向对象的特殊成员和修饰符

    一、类成员的修饰符 类的所有成员在Python面向对象的成员组成部分已经详细介绍了,对于每个成员而言,都有两种形式...

  • Day8 - private与this

    面向对象:继承、封装、多态 private: 私有权限修饰符,用于修饰类中的成员(成员变量、成员 函数);私有只在...

  • oop

    面向对象特点:封装、继承、多态 类声明一个类:[修饰符]class 类名{ [成员属性]//也叫成员变量 [成员方...

  • 面向对象01-方法(重载)/包/修饰符

    面向对象01-方法(重载)/包/修饰符 [TOC] 1、面向对象与面向过程 2、类和对象 2.1、类和对象的的创建...

  • 封装

    面向对象的三个特征:封装,继承,多态 封装 private 私有 属于成员修饰符,不能修饰...

  • typescript 入门教程二

    ts中面向对象成员修饰符:public , private , protexted(ts官方网站:ts) 在ts中...

  • Java零基础自学DAY5 2018-03-17

    面向对象篇 1.类和对象 [修饰符] class 类名 // 修饰符:public、final、abstract...

  • java基础知识—面向对象和继承

    java基础知识—面向对象和继承 一、变量 静态变量 成员变量 局部变量 详情可见 浅谈Java变量。 二、修饰符...

  • Java面向对象

    面向对象 封装 Java语言中,访问修饰符可以出现在类,成员变量,成员方法以及构造方法前,用来控制权限。Java提...

  • Python高级

    Python的面向对象 类 Class 类变量 Class variable 数据成员 Data member 函...

网友评论

      本文标题:Python面向对象的特殊成员和修饰符

      本文链接:https://www.haomeiwen.com/subject/ugmlpqtx.html