欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python中self与__init__的意义与作用和一些理解

程序员文章站 2022-06-15 19:39:35
你是一个人你是人类的一个实例你有你自己的性别,也就是一个类似于self.gender的东西。因为这个东西是每个人不一样的,所以你不能写Human.gender。但有的时候一个类成员还是有一些共用的东西的,比方说你的国籍是中国,所以human.nationality="Chinese"。你作为一个人并不是从时间的一开始就存在的,得有什么东西创建一个对象。其实严格来说真真创建这个对象(打造躯壳)是__new__干的事情(一般不需要太在意,除非你在写一些巨复杂的东西),__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

相关标签: python class