Python基础(十九):面向对象“类”第二课——init函数
2021-06-04 12:03
标签:name 方法 就会 src tps 就是 入参 固定 灵活 前面,已经对类和对象有一个简单的了解。今天讲述一下“类的初始化之init函数”,这很多人一直都难以理解,好好看看吧! 仔细观察这个函数的构造,下面来絮叨絮叨: 先简单看一个例子: 结果如下: 根据惯例:类中定义的方法,第一个参数是固定的,我们命名为"self"。 再次观察下面这个类: 这里我们需要讲述3点: 这个知识其实知识不太难,只是太抽象,大家不好理解。大家一定要好好理解。 既然self指的是当前对象p,而 这里的self.name = "张三"看着眼熟吗?是不是和之前讲述的p.name = "张三"一摸一样?这是必须的,因为self就是当前对象p。但是这是写在类中的代码,都默认写成self。 上述在init方法中,我们增加了一个name属性,一个age属性。但是可以发现:当我们创建不同的对象p、p1、p2.....他们的名字name和年龄age都是千篇一律的,这肯定是不合理的。 为了避免创建千篇一律的对象,在定义init方法时,可以为该方法提供一些参数,来更加灵活的进行初始化。 直接通过案例讲解: 上述类,我们不仅有一个self参数,还传递了name、age参数。 self在实例化对象的时候,是隐式传递的,我们不用管,但是其余参数必须显示地给出。 此时,我们调用name和age属性: 这里只是为了说明动态增加“属性和方法”的可能性,实际操作中并不会这样做。实际操作中,“属性”我们直接在init方法中定义,“方法”也是直接在定义类的时候写好。 这里在定义一个类: 上述类中有一个name属性,一个walk()方法。 动态增加一个age属性。 动态增加方法,看起来很复杂,大家了解即可。 结果如下: 上述例子大家看起来可能一脸懵逼,做个说明: Python基础(十九):面向对象“类”第二课——init函数 标签:name 方法 就会 src tps 就是 入参 固定 灵活 原文地址:https://www.cnblogs.com/pure3417/p/14651934.html
__init(self)__
函数
class Person:
def __init__(self):
print("执行")
def walk(self):
print("走路")
def run(self):
print("跑步")
p = Person() # 可以发现,我们并没有主动访问它,它就自动调用了。
什么是self ?
class Person:
def __init__(self):
print("执行")
def walk(self):
print("走路")
def run(self):
print("跑步")
p = Person() # 可以发现,我们并没有主动访问它,它就自动调用了。
p.walk()
p.run()
在__init(self)__方法中,增加属性
__init()__
方法在创建对象的时候“自动调用”,那么在__init(self)__
方法中,增加属性,就显得很方便了,我们看一个例子:class Person:
def __init__(self):
# self指的就是当前创建的对象,也就是下面那个p。
self.name = "张三"
self.age = 10
def run(self):
print("跑步")
p = Person()
上述增加属性的“弊端”
通过传入参数的形式,进行灵活的控制
class Person:
def __init__(self,name,age):
#self指的就是当前创建的对象
self.name = name
self.age = age
def run(self):
print("跑步")
特别注意:
# 下面,我们连续创建了3个对象,分别是p、p1、p2。
# 也可以看出 :不同对象具有不同的姓名和年纪
p = Person("张三",22)
p1 = Person("李四",25)
p2 = Person("王五",27)
动态的增加属性和方法
class Dog:
def __init__(self, name):
self.name = name
def walk(self):
# 这里的sel.name不理解,先跳过
print(f"{self.name}狗:会跳高")
动态增加属性
动态增加方法
def run(self):
print("动态增加的方法")
dog.run = run
dog.run(dog)
文章标题:Python基础(十九):面向对象“类”第二课——init函数
文章链接:http://soscw.com/index.php/essay/90390.html