构造方法
构造方法是什么呢?类里面定义的函数叫做类的方法,变量叫做类的属性作用构造方法是类的默认函数,也就是说,不管你的代码有没有写这个方法,类里面,总会有这个东西。而这个构造方法的名字叫做是__init__class Person(object): pass丸子 = Person()a = person.init()print(a)1234567输出的结果会是None,也就是空值,为什么呢?因为这是个函数,他默认没有返回值,也就是乜有return语句,所以输出这个构造方法(函数),就是None了当然了,不止这个作用构造方法还是对类传参的方法之前不是讲过函数的传参吗,类也能传参,就靠这个构造方法来传递了class Person(object): def init(self, name, age): self.name = name self.age = ageMenger = Person()print(person.init())1234567这样是会报错的!因为你的构造方法有参数,而你实例化对象没有参数,所以会报错会报什么错呢?他会告诉你,你的类应该有两个参数,而你一个都没有给,还少了两个。person = Person() TypeError: init() missing 2 required positional arguments: ‘name’ and 'age’而这样就对了:class Person(object): def init(self, name, age): self.name = name self.age = ageMenger = Person(“萌杰尔”, 20)1234567这样计算机就知道了你这个person的对象的name和age属性的值而你也可以通过Menger.name和Menger.age来查看对象的属性name = Menger.nameage = Menger.ageprint(“姓名:{} \n年龄:{}”.format(name, age))123结果是:姓名:萌杰尔 年龄:20还有一个作用是将属性私有化,也就是封装可以将构造方法的参数,进行封装,让其在每个方法中都可以调用想着这样的代码就是错的class Person(object): def init(self, name, age): pass def speak(self): print(f"{age}岁的{name}会说话")Menger = Person(“布小禅”, 20)name = Menger.nameage = Menger.ageperson.speak()print(“姓名:{} \n年龄:{}”.format(name, age))12345678910111213因为speak方法里面的name和age,计算机不知道是谁,计算机不认识他们两个,而刚刚那两行self.name = name和self.age = age就是相当于告诉计算机name和age是类的参数class Person(object): def init(self, name, age): self.name = name self.age = age def speak(self): print(f"{age}岁的{name}会说话")Menger = Person(“布小禅”, 20)name = Menger.nameage = Menger.ageMenger.speak()print(“姓名:{} \n年龄:{}”.format(name, age))1234567891011121314这样就对了,输出为:20岁的萌杰尔会说话姓名:萌杰尔年龄:20
2021-07-03
最新推荐文章于 2021-11-10 17:26:45 发布