python之类和元类

1 类 class 和元类 metaclass 的有什么区别?

元类就是创建类的类

2 类实例化时候,initnew 方法有什么作用?

init是初始化的方法,初始化类的一些基本信息,如给变量赋值
new是实例化的方法,创建类的具体实例,重写new可以实现单例模式

3 实例方法、类方法和静态方法有什么不同?

实例方法就是类中的普通方法,由实例对象调用
类方法只能访问类变量,不能访问实例变量
静态方法其实和类没有关系,不能直接调用类的属性,如果非说有关系的话,就是通过类来调用

4 类有哪些常用的魔法属性以及它们的作用是什么?

__init__()初始化方法
__new__()实例化方法
__doc__显示函数的文档字符串信息
__module__显示类定义的位置
__dict__显示对象的所有属性和方法

5 类中的 property 属性有什么作用?

可用于装饰函数,被装饰的函数在调用方式就可以像调用普通变量一样

6 描述一下抽象类和接口类的区别和联系?

抽象类要被子类继承,接口要被类继承
抽象类和接口类都不能直接实例化
接口类只能做方法声明,抽象类可以做方法声明也可以做方法实现
抽象类中的抽象方法必须全部由其子类实现,如果子类不能够完全实现抽象类中的所有方法,那么该类只能还是抽象类,接口类也类似,继承接口的类如果不能完成实现接口中的所有方法,那么该类还是抽象类

7 类中的私有化属性如何访问?

在类中写一个函数,来返回私有属性
class A(object):
	__x = 2
	def get_x(self):
		return self.__x

8 类如何才能支持比较操作?

#比较运算符重载,重新实现类中的__lt__()、__gt__()、le、ge、eq、ne
#使用functools下的装饰器,total_ordering
from functools import total_ordering
@total_ordering
class Rect(object):
	def __init__(self,x,y):
		self.x=x
		self.y=y

	def area(self):
		return self.x*self.y

	def __lt__(self,other):
		return self.area()<other.area()


a = Rect(3,4)
b=Rect(4,5)
print(a<b)

9 hasattr()、getattr()、setattr()、delattr()分别有什么作用?

反射相关的函数
hasattr():判断类中是否有该方法
getattr():获得类中的该方法
setattr():在类中设置方法
delattr():在类中删除该方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值