python的特殊类_python - 类的特殊成员方法
1)doc 表示類的描述信息
class Dog(object):
"""
這個(gè)類是狗類
"""
def __init__(self, name, food):
self.name = name
self.food = food
d = Dog('xiaoming', 'baozi')
print(d.__doc__)
# 打印結(jié)果
這個(gè)類是狗類
2)module和class
__module__表示當(dāng)前操作的對(duì)象的類是在哪個(gè)模塊
__class__表示當(dāng)前操作的對(duì)象的類是什么
3)init
構(gòu)造方法
4)del
析構(gòu)方法
5)call
對(duì)象后面加括號(hào),觸發(fā)執(zhí)行。
注:構(gòu)造方法的執(zhí)行是由創(chuàng)建對(duì)象觸發(fā)的。即:
對(duì)象=類名()
而對(duì)于__call__方法的執(zhí)行是由對(duì)象后面加括號(hào)觸發(fā)的,即:
對(duì)象()
示例:
class Dog(object):
"""
這個(gè)類是狗類
"""
def __init__(self, name, food):
self.name = name
self.food = food
def __call__(self, *args, **kwargs):
print('running call method', args, kwargs)
d = Dog('xiaoming', 'baozi')
d()
d(1, 2, 3, name = "xiaohong")
6)dict
查看類或者對(duì)象中的所有成員
可以通過:
類名.__dict__ # 打印類里面的所有屬性,不包括示例屬性
實(shí)例名.__dict__ # 打印示例所有睡醒,不包括類屬性
7)str()
一般是自定義__str__()方法:
class Dog(object):
"""
這個(gè)類是狗類
"""
def __init__(self, name, food):
self.name = name
self.food = food
def __call__(self, *args, **kwargs):
print('running call method', args, kwargs)
def __str__(self):
return """<
name: %s
food: %s
>
""" %(self.name, self.food)
d = Dog('xiaoming', 'baozi')
print(d.__str__())
8)getitem,setitem,delitem
大多數(shù)時(shí)間都沒有什么用。
9)new 、 metaclass
在Python中一切皆對(duì)象,類也是對(duì)象。
class Foo(object):
def __init__(self, name):
self.name = name
f = Foo("Adoe")
f是通過Foo類實(shí)例化化的對(duì)象。其實(shí)Foo類本身也是一個(gè)對(duì)象,因?yàn)閜ython一切皆對(duì)象。
class Foo(object):
def __init__(self, name):
self.name = name
f = Foo("Adoe")
print (type(f)) #
print (type(Foo)) # Foo就是來自于type
圖片.png
類是由type類實(shí)例化而來的。
type是由python解釋器自己實(shí)現(xiàn)的。
類中有一個(gè)屬性__metaclass__
new是新式類中自帶的,我們進(jìn)入object里面源代碼可以看到。
@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for accurate signature. """
pass
我們可以重寫new方法。
new在實(shí)例化的時(shí)候也可以自動(dòng)執(zhí)行,而且是在init之前。
初始化實(shí)例的時(shí)候,是首先經(jīng)過new然后才(new里面)調(diào)用init的。
重寫new()方法:
class Foo(object):
def __init__(self, name):
self.name = name
def __new__(cls, *args, **kwargs):
print("==new==")
return object.__new__(cls) # 注意:這個(gè)cls就是Foo類,是一個(gè)類對(duì)象
f = Foo("Adoe")
print(f.name)
總結(jié)
以上是生活随笔為你收集整理的python的特殊类_python - 类的特殊成员方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那里不育医院好
- 下一篇: python运行列表的结果不同_pyth