python基础--类的这些特殊方法你都知道吗?

方法列表

方法说明案例
__dir__列出所有的方法
__init__构造方法
__new__构建,实例化类
__del__析构实例
__str__打印相当于print
__call__直接调用函数
__getattr__获取参数
__setattr__设置参数
__getitem__sd
__setitem__sd
__len__sd
__repr__sd
obj.__dict__sd
obj.__class__sd
class.__bases__sd
class.__base__sd
class.__mro__查看继承类的层次结构
class.__subclasses__()sd

__dir__

class CLanguage:
    __a = 1
    b = 2
    def __init__ (self):
        self.name = "C语言中文网"
        self.add = "http://c.biancheng.net"
        
print(dir(CLanguage))
print("---------")
clangs = CLanguage()
print(clangs.__dir__())
"""
['_CLanguage__a', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'b']
---------
['name', 'add', '__module__', '_CLanguage__a', 'b', '__init__', '__dict__', '__weakref__', '__doc__', '__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__new__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__format__', '__sizeof__', '__dir__', '__class__']
"""

obj.__dict__

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 22 17:54:46 2021

@author: daicong
"""
class CLanguage:
    """输出可以看到私有属性的键需要加上类名"""
    __a = 1
    b = 2
    def __init__ (self):
        self.name = "C语言中文网"
        self.add = "http://c.biancheng.net"
#通过类名调用__dict__
print(CLanguage.__dict__)

#通过类实例对象调用 __dict__
clangs = CLanguage()
"""会打印类中所有的键值对"""
print(clangs.__dict__)
print(clangs._CLanguage__a)

"""
{'__module__': '__main__', '_CLanguage__a': 1, 'b': 2, '__init__': <function CLanguage.__init__ at 0x000001FE7D55F3A0>, '__dict__': <attribute '__dict__' of 'CLanguage' objects>, '__weakref__': <attribute '__weakref__' of 'CLanguage' objects>, '__doc__': None}
{'name': 'C语言中文网', 'add': 'http://c.biancheng.net'}
"""

class.__mro__

class CLanguage:
    __a = 1
    b = 2
    def __init__ (self):
        self.name = "C语言中文网"
        self.add = "http://c.biancheng.net"
        
print(CLanguage.__mro__)
"""
(<class '__main__.CLanguage'>, <class 'object'>)
object是所有类的父类
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值