python中self与__init__的意义与作用和一些理解
你是一个人你是人类的一个实例你有你自己的性别,也就是一个类似于self.gender的东西。因为这个东西是每个人不一样的,所以你不能写Human.gender。但有的时候一个类成员还是有一些共用的东西的,比方说你的国籍是中国,所以human.nationality=“Chinese”。你作为一个人并不是从时间的一开始就存在的,得有什么东西创建一个对象。其实严格来说真真创建这个对象(打造躯壳)是__new__干的事情(一般不需要太在意,除非你在写一些巨复杂的东西),__init__让那个对象变成了那个独一无二的你(注入灵魂)。而且__init__是不需要调用的,在类被实例化的同时,init 方法就会被自动调用。
self是指不同的实例的指代,比如zhangsan与lisi两个实例,传入的参数是不同的,self 简单的说就是把 class 中 定义的 变量和函数 变成 实例变量和实例函数
class human: def __init__(self,name,gender,age,rich):#类实例化时需要传入三个参数 self.name=name
self.gender=gender
self.age=age
human.nationality="Chinese"#固定参数,不需要传入,已经写好 self.rich=rich print(self.name+" is a "+human.nationality)#类实例化时,被自动调用 def info(self): print("**************************************") print("My name is "+ self.name) print("My age is " + str(self.age)) print("My gender is "+self.gender) print("My nationality is "+human.nationality) print("**************************************") def money(self): if self.rich: print(self.name+" is a rich guy") else: print(self.name+" is a poor guy")
实例化
zhangsan=human("zhangsan","male",18,True)#__init__()被自动调用输出print语句 lisi=human("lisi","female",20,False)
zhangsan is a Chinese
lisi is a Chinese
print(zhangsan.age) print(lisi.age) print(zhangsan.nationality) print(lisi.nationality) zhangsan.info() lisi.info() zhangsan.money()
18
20
Chinese
Chinese
**************************************
My name is zhangsan
My age is 18
My gender is male
My nationality is Chinese
**************************************
**************************************
My name is lisi
My age is 20
My gender is female
My nationality is Chinese
**************************************
zhangsan is a rich guy
zhangsan.nationality="USA" zhangsan.info()
**************************************
My name is zhangsan
My age is 18
My gender is male
My nationality is USA
**************************************
本文地址:https://blog.csdn.net/qq_39180879/article/details/109046622
上一篇: object-c 学习笔记(一)基础术语
下一篇: 媳妇不能惯的太厉害了
推荐阅读
-
Python中staticmethod和classmethod的作用与区别
-
Python中浅拷贝和深拷贝的理解与研究
-
opencv-python与c++ opencv中的一些区别和基础的知识
-
关于PHP中协程和阻塞的一些理解与思考
-
python中self与__init__的意义与作用和一些理解
-
Python中staticmethod和classmethod的作用与区别
-
python2中的__new__与__init__,新式类和经典类
-
Python中的单下划线与双下划线含义和一些特殊约定
-
Python中的__new__与__init__魔术方法理解笔记
-
Python中的__new__与__init__魔术方法理解笔记