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
**************************************

你可能感兴趣的:(python,python,class,类)