Skip to content

Latest commit

 

History

History
82 lines (43 loc) · 1.44 KB

类.md

File metadata and controls

82 lines (43 loc) · 1.44 KB
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__ 是为了像函数一样调用它