class MyClass(object):
def __init__(self, value1, value2):
self.value1 = value1
self.value2 = value2
class MySubClass(MyClass):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
my_class = MyClass(1, 2)
print(my_class.value1, my_class.value2)
my_subclass1 = MySubClass(3, 4)
print(my_subclass1.value1, my_subclass1.value2)
my_subclass2 = MySubClass(3, value2=4)
print(my_subclass2.value1, my_subclass2.value2)
写 *args, **kwargs
只是为了在继承的时候,既可以直接给值,也可以是key-value的形式
类的几种特殊方法
class DictDemo:
def __init__(self,key,value):
self.dict = {}
self.dict[key] = value
def __getitem__(self,key):
return self.dict[key]
def __setitem__(self,key,value):
self.dict[key] = value
dictDemo = DictDemo('key0','value0')
print(dictDemo['key0']) #value0
dictDemo['key1'] = 'value1'
print(dictDemo['key1']) #value1
__getitem__
当采用索引的方式取值,就会自动执行 这个方法
用法在定义的时候会传入一个 key 的参数
def __getitem__(self, key):
然后没当 这样调用类的时候就会执行,Class实例[key]
__setitem__
当采用字典的方式赋值时,就会自动调用这个方法
__lenth__
使用内建函数len(),就自动调用这个
__call__
是为了像函数一样调用它