笔记:
首先理解,在python中一切皆对象,同过类创建的实例是对象,类本身也是一种对象.
理解这一点之后,因为类也是对象,我们便可以运行时动态的创建他们,就像创建其他实例一样.
def choose_class(name):
if name == 'foo':
class Foo(object):
pass
return Foo # 返回的是类,不是类的实例
else:
class Bar(object):
pass
return Bar
Myclass = choose_class('foo')
print(Myclass)
<class '__main__.choose_class.<locals>.Foo'>
print(Myclass())
<__main__.choose_class.<locals>.Foo object at 0x0000000004612518>
一般上面的方法不建议用,因为类是一等公民.
另外一种动态创建类的方法 type()方法,格式如下:
#先看传统方法
class person:
pass
p1 = person()#这样我们就简单的创建了person类的实例化对象
#再看第二种用type()的方法
#类名 = type("类名",(父类),{字典类型的属性})
Test = type("Test2",(),{})
t1 = Test()
上面第二种方法叫做元类
#再看带有方法的元类
def printNum(self):
print("---%d---" % self.num)
Test3 = type("Test3", (), {"printNum": printNum})
t = Test3()
t.num =100
t.printNum()
列表操作
列表删除的两个方法;
del list[i]
list.pop(index)
#如果要从列表中删除一个元素,且不再以任何方式使用它,就是用del 语句;如果你要在删除元素后还能继续使用它,及使用方法pop()
可以根据值来删除元素(不知道要从列表中删除的值所在的位置.)
列表删除的两个方法:
del list[i]
list.pop(index)#默认的话删除最后一个元素 并且返回被删除的元素
可以根据值来删除元素(不知道要从列表中删除的值所在的位置.)可使用remove()
motocycles = ["handa","yamaha","suzuki"."ducati"]
print(motocycles)
motecycles.remove("ducati")#不知道ducati在列表哪个位置,所以用remove()方法
print(motecycles) #输出["handa","yamaha","suzuki"]
列表添加元素
用append()方法
motocycles = ["handa","yamaha","suzuki","ducati"]
motocycles.append("jane") #add an element to the end of list
插入元素:用insert()方法
motocycles = ["handa","yamaha","suzuki"]
#motocycles.insert(index,element)
motocycles.insert(0,"benz")#insert a element "benz" at the index of 0
列表的sort()方法 注意: 'sort()'是一个方法
使用sort()方法对列表操作后列表已经被永久性改变
cars = ["bmw","audi","toyota","subaru"]
cars.sort()
print(cars)#['audi', 'bmw', 'subaru', 'toyota']
sorted()函数可以对列表进行临时排序,不会永久性改变列表元素的排列
cars = ["bmw","audi","toyota","subaru"]
print("the original car list is : ")
print(cars)
print("the sorted list is:")
print(sorted(cars))
print("the original car list is:")
print(cars)
#the original car list is :
#['bmw', 'audi', 'toyota', 'subaru']
#the sorted list is:
#['audi', 'bmw', 'subaru', 'toyota']
#the original car list is:
#['bmw', 'audi', 'toyota', 'subaru']
|
|