pythonベースなどの一般的な組み込み方法
3525 ワード
一、_del__(self):オブジェクトが消えたときにこのメソッドを呼び出します.
二、クラスメソッド@classmethod
三、静的方法:@staticmethod、一般的にクラスに関係なくオブジェクトに関係なく使用する
四、_new__()メソッド:オブジェクトを作成する静的メソッドinit__()オブジェクトの初期化
サブクラスでの書き換え_new__()メソッド、親を呼び出す_new__()メソッドでは、オブジェクトの参照を返すには、オブジェクトが作成されます.
書き換え_new__()メソッド、単一のインスタンスを作成できます
五、_slots__メソッド:オブジェクトのプロパティとメソッドの動的追加を制限する
についてslot__次の点に注意してください. __slots__オブジェクトのみを制限、クラスを制限しない . __slots__クラスオブジェクトの属性のみならず、クラスオブジェクトを制限する方法 __slots__現在のクラスにのみ作用し、継承されたサブクラスには作用しない サブクラスで定義_slots__,サブクラスが定義できる属性は、自身の__です.slots__親を付ける_slots__
>>> class cat(object):
def __del__(self):
print(" ")
>>> import sys
>>> cat1=cat() # cat1
>>> sys.getrefcount(cat1) # , 1, 2
2
>>> cat2=cat1 # , 3
>>> sys.getrefcount(cat1)
3
>>> sys.getrefcount(cat2)
3
>>> del cat1 # ,cat1 ,cat2 , 2
>>> sys.getrefcount(cat2)
2
>>> del cat2 # , , , __del__()
二、クラスメソッド@classmethod
>>> class test(object):
def show(self):
print("This is a class")
@classmethod #
def way(cls):
print("This is a class method")
>>> a=test()
>>> a.way() #
This is a class method
>>> test.way() #
This is a class method
三、静的方法:@staticmethod、一般的にクラスに関係なくオブジェクトに関係なく使用する
>>> class test(object):
def show(self):
print("This is a class")
@staticmethod #
def way( ): #
print("This is a static method")
>>> a=test()
>>> a.way() #
This is a static method
>>> test.way() #
This is a static method
四、_new__()メソッド:オブジェクトを作成する静的メソッドinit__()オブジェクトの初期化
>>> class test(object):
def show(self):
print("This is show function")
>>> a=test() # __new__() , __new__() , 。 __init__() 。
サブクラスでの書き換え_new__()メソッド、親を呼び出す_new__()メソッドでは、オブジェクトの参照を返すには、オブジェクトが作成されます.
書き換え_new__()メソッド、単一のインスタンスを作成できます
, __new__()
>>> class shit(object):
def show(self):
print("-----show----")
def __new__(cls):
print(" new ")
>>> a=shit()
new
>>> a.show() # __new__(cls) ,
Traceback (most recent call last):
File "", line 1, in
a.show()
AttributeError: 'NoneType' object has no attribute 'show'
__new__(cls) ,
class shit(object):
def show(self):
print("-----show----")
def __new__(cls):
print(" new ")
object.__new__(cls)
>>> a=shit()
new
>>> a.show()
Traceback (most recent call last):
File "", line 1, in
a.show()
AttributeError: 'NoneType' object has no attribute 'show'
, __new__()
>>> class shit(object):
def show(self):
print("-----show----")
def __new__(cls):
print(" new ")
return object.__new__(cls) # __new__(cls)
>>> a=shit()
new
>>> a.show()
-----show----
五、_slots__メソッド:オブジェクトのプロパティとメソッドの動的追加を制限する
>>> class student(object):
__slots__=["name","age"] #
def __init__(self,stuName,stuAge):
self.name=stuName
self.age=stuAge
>>> student.Persons=100 #
>>> stu1=student("ma dongmei",17)
>>> stu1.gender="girl"
# ,
Traceback (most recent call last):
File "", line 1, in
stu1.gender="girl"
AttributeError: 'student' object has no attribute 'gender'
についてslot__次の点に注意してください.