其他
为什么要创建一个不能被实例化的类?
The following article is from 未闻Code Author kingname
花下猫语:今天分享的文章介绍了 Python 中的进阶内容 Mixins,文章的切入点很有意思,是从“为什么要创建一个不能实例化的类”引入的,全文简短而清晰,就算是根本没接触过这个概念的人,也能基本把握住其要点,值得推荐一读!
def __init__(self, name):
self.name = name
def say(self):
print(f'我叫做:{self.name}')
kingname = People('kingname')
kingname.say()
def say(self):
print(f'我叫做:{self.name}')
def __new__(self):
raise Exception('不能实例化这个类')
kingname = People()
kingname.say()
People
:def __init__(self, name, age):
self.age = age
self.name = name
def say(self):
print(f'我叫做:{self.name},我今年{self.age}岁')
kingname = People('kingname', 28)
pm = People('pm', 25)
kingname > pm
def __init__(self, name, age):
self.age = age
self.name = name
def say(self):
print(f'我叫做:{self.name},我今年{self.age}岁')
def __ne__(self, other):
return self.age != other.age
def __lt__(self, other):
return self.age < other.age
def __le__(self, other):
return self.age <= other.age
def __gt__(self, other):
return self.age > other.age
def __ge__(self, other):
return self.age >= other.age
def __ne__(self, other):
return self.age != other.age
def __lt__(self, other):
return self.age < other.age
def __le__(self, other):
return self.age <= other.age
def __gt__(self, other):
return self.age > other.age
def __ge__(self, other):
return self.age >= other.age
__init__
方法,也不会写类属性。并且 Mixin 类中的方法看起来更像是工具方法。抽象类(Abstract Class)
、接口(Interface)
和混入(Mixins)
的区别:包含一个或多个抽象方法。 允许包含状态(实例变量)和非抽象方法。
只能包含抽象方法。
不能包含状态(实例变量)。 包含一个或多个非抽象方法。
参考资料
钻石继承: https://en.wikipedia.org/wiki/Multiple_inheritance
优质文章,推荐阅读: