用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?
python 类中一定需要有 __init __方法么?没有的会怎样?
在回答这个问题之前,先说两个问题:
① 面向对象编程?
② 什么是类?
面向对象,先上一个正式点的解释:
“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。”
感觉看的云里雾里的。。。。
接下来看看通俗易懂的,面向对象是相对于面向过程而提出的程序设计思想,面向对象的三大特征:封装、继承、多态。
再来看一个有趣的例子,来自知乎:
不要被标题迷惑,写的挺贴切,客观的,每种方法都有利有弊,致胜的法宝永远都是实际情况实际分析。文中虽然没用python做例子,但是本质和原理的东西是不变的,与用什么语言无关。
说明: 以上的内容来自于网络,不代表作者本人的观点和看法,与作者本人立场无关,相关责任不由作者承担。
什么是–类?
类是对现实事物的抽象,例如人类,人有男人、女人,但概念还是太大,需要继续抽象,思考一下人(不论男女)正常情况都有什么特征,例如名字、性别等固定的特征,一般用名词来限定(属性),有什么行为,例如人会吃饭、看电影、上厕所等行为(方法),一般用动词来描述,我们将属性和方法给抽象出来(一定是普遍的,共有的,非特指或小范围的),就构成了人类这个"类"(Class)。
现在来回答开始时提出的问题:python 类中一定需要有 __init __方法么?没有的会怎样?
我们已经知道了,类是由属性和方法构成的,python类中用__init__方法(也可理解为初始化方法)来定义属性,在实例化一个对象时,会先调用__init__方法,将这个类所具有的相关属性赋予这个对象,然后我们通过这个对象,就可以直接访问他所具有的属性。
还是人类这个例子,看下面的代码:
class Person():#定义一个类def __init__(self,name,gender):#人有名字self.name = name#人有性别self.gender = genderdef eat(self):#人需要吃饭,所以定义一个吃饭的方法print("%s正在吃饭,有啥事吃完再说。。。"% self.name)def watch_movie(self,movie_name):#还需要娱乐,所以定义可以看电影的方法print("{}正在看{},这部电影!".format(self.name, movie_name))def go_wc(self):#人还需要上厕所,不然憋死了,所以定义一个上厕所的方法if self.gender == "男":#男的上男厕所,进错了就是耍流氓,女的就是进错了。。。哈哈公平何在print("{}要进{}厕所。。。不然就是耍流氓".format(self.name,self.gender) )if self.gender == "女":print("{}要进{}厕所。。。不然就是走错了".format(self.name,self.gender))if __name__ == "__main__":#实例化一个人person1 = Person("小明","男")#查看这个人的名字print(person1.name)#查看这个人的性别print(person1.gender)#调用吃饭这个方法,确保不被饿死person1.eat()#吃完可以看看电影person1.watch_movie("色即是空")#看电影过程中可能需要上厕所person1.go_wc()
再看一下下面的代码:
转载链接:
https://blog.csdn.net/qq_30597401/article/details/108409239
总结
以上是生活随笔为你收集整理的用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【HRBUST - 1623】Relat
- 下一篇: 【Python学习】 - sklearn