我们基于python中一切皆为对象,字符串、列表、字典、函数是对象,类也是一个对象的概念分析出:我们用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类(元类可以简称为类的类),内置的元类为type,type是Python的一个内建元类,用来直接控制生成类,Python中任何class定义的类其实都是type类实例化的对象。
Python中类方法、类实例方法、静态方法有何区别?
- 类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,
类对象和实例对象都可调用 - 类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;
- 静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系
遍历一个object的所有属性,并print每一个属性名?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Car: def __init__(self,name,loss): self.name = name self.loss = loss def getName(self): return self.name def getPrice(self): return self.loss[0] def getLoss(self): return self.loss[1] * self.loss[2]
toyota = Car("丰田", [100000, 6, 500])
print(getattr(toyota, 'name'))
print(dir(toyota))
|
丰田
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'getLoss', 'getName', 'getPrice', 'loss', 'name']
请描述抽象类和接口类的区别和联系
- 抽象类: 规定了一系列的方法,并规定了必须由继承类实现的方法。由于有抽象方法的存在,所以抽
象类不能实例化。可以将抽象类理解为毛坯房,门窗,墙面的样式由你自己来定,所以抽象类与作为基
类的普通类的区别在于约束性更强 - 接口类:与抽象类很相似,表现在接口中定义的方法,必须由引用类实现,但他与抽象类的根本区别
在于用途:与不同个体间沟通的规则,你要进宿舍需要有钥匙,这个钥匙就是你与宿舍的接口,你的舍
友也有这个接口,所以他也能进入宿舍,你用手机通话,那么手机就是你与他人交流的接口 - 区别和关联:
- 接口是抽象类的变体,接口中所有的方法都是抽象的,而抽象类中可以有非抽象方法,抽象类是声明
方法的存在而不去实现它的类 - 接口可以继承,抽象类不行
- 接口定义方法,没有实现的代码,而抽象类可以实现部分方法
- 接口中基本数据类型为static而抽象类不是
Python中如何动态获取和设置对象的属性?
1 2 3 4
| if hasattr(Parent, 'x'): print(getattr(Parent, 'x')) setattr(Parent, 'x',3) print(getattr(Parent,'x'))
|