python的特殊类_python - 类的特殊成员方法
1)doc 表示類的描述信息
class Dog(object):
"""
這個類是狗類
"""
def __init__(self, name, food):
self.name = name
self.food = food
d = Dog('xiaoming', 'baozi')
print(d.__doc__)
# 打印結果
這個類是狗類
2)module和class
__module__表示當前操作的對象的類是在哪個模塊
__class__表示當前操作的對象的類是什么
3)init
構造方法
4)del
析構方法
5)call
對象后面加括號,觸發執行。
注:構造方法的執行是由創建對象觸發的。即:
對象=類名()
而對于__call__方法的執行是由對象后面加括號觸發的,即:
對象()
示例:
class Dog(object):
"""
這個類是狗類
"""
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
查看類或者對象中的所有成員
可以通過:
類名.__dict__ # 打印類里面的所有屬性,不包括示例屬性
實例名.__dict__ # 打印示例所有睡醒,不包括類屬性
7)str()
一般是自定義__str__()方法:
class Dog(object):
"""
這個類是狗類
"""
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
大多數時間都沒有什么用。
9)new 、 metaclass
在Python中一切皆對象,類也是對象。
class Foo(object):
def __init__(self, name):
self.name = name
f = Foo("Adoe")
f是通過Foo類實例化化的對象。其實Foo類本身也是一個對象,因為python一切皆對象。
class Foo(object):
def __init__(self, name):
self.name = name
f = Foo("Adoe")
print (type(f)) #
print (type(Foo)) # Foo就是來自于type
圖片.png
類是由type類實例化而來的。
type是由python解釋器自己實現的。
類中有一個屬性__metaclass__
new是新式類中自帶的,我們進入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在實例化的時候也可以自動執行,而且是在init之前。
初始化實例的時候,是首先經過new然后才(new里面)調用init的。
重寫new()方法:
class Foo(object):
def __init__(self, name):
self.name = name
def __new__(cls, *args, **kwargs):
print("==new==")
return object.__new__(cls) # 注意:這個cls就是Foo類,是一個類對象
f = Foo("Adoe")
print(f.name)
總結
以上是生活随笔為你收集整理的python的特殊类_python - 类的特殊成员方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那里不育医院好
- 下一篇: python运行列表的结果不同_pyth