python-day6(补充三:实例变量和函数)

实例变量和函数

  1. 实例函数的定义
  2. 认识__init__函数
  3. 定义实例变量
  4. 实例函数中访问实例变量
  5. 外部访问实例变量与函数

实例函数的定义

定义实例函数

class Student:
	def say_hello(self, msg):
	print(f"hello{msg}")

实例函数属于对象

class Student:
    def say_hello(self, msg: str):
        print(f"Hello {msg}")

def main():
    s1 = Student()
    s1.say_hello("hahaha")

if __name__ == '__main__':
    main()

输出

Hello hahaha

这里定义了一个say_hello(self, msg: str)的实例函数,self是必须带的,只要是类的实例函数必须带这个参数,函数体中写的东西可以理解为具体的属性;必须有对象才能用。(执行哪个对象的实例函数)
这里语句可以理解为:

  1. 我先用Student()这个类创建了一个对象s1
  2. 在s1中有一个叫say_hello()的属性
  3. 调用s1的say_hello属性

认识__init__函数

__init__函数是用于初始化对象的实例函数

class Student:
	def __init__(self):
		print("doing initial stuff")

s1 = Student()

实例:

class Student:
    def __init__(self, name: str):     # 初始化,这里添加了一个name的属性
        self.name = name        # 给这个对象定义一个属性,将参数中传过来的name赋值给这个属性

    def say_hello(self, msg: str):
        print(f"Hello {msg}, {self.name}")

def main():
    # 1. create a physical object
    # 2. call __init__() to initialize this object
    s1 = Student("Jack")
    s2 = Student("Tom")

    s1.say_hello("111")
    s2.say_hello("222")

if __name__ == '__main__':
    main()

python中可以动态添加对象的属性

s1.gender = 'male'	# 直接添加在后面
print(s1.gender)

实例函数中访问实例变量

在实例函数中通过self访问实例变量

class Student:
	def __init__(self, name:str):
		self.name = name
	
	def introduce():
		print(f"I'm {self.name}")

s1 = Student("Jack")
s1.name = "Tom"
s1.introduce()

代码

class Student:
    def __init__(self, name: str):     # 初始化
        self.name = name        # 给这个对象定义一个属性,将参数中传过来的name赋值给这个属性

    def say_hello(self, msg: str):
        print(f"Hello {msg}, {self.name}")

def main():
    # 1. create a physical object
    # 2. call __init__() to initialize this object
    s1 = Student("Jack")
    s2 = Student("Tom")

    s1.say_hello("111")
    s2.say_hello("222")

    s1.gender = 'male'
    print(s1.gender)

if __name__ == '__main__':
    main()

其实就是把细节包装起来,然后用一个固定的模式将函数中实现的功能给调用出来。

资料来源:【面向对象的Python编程-03.实例变量与函数】 https://www.bilibili.com/video/BV1GD4y187Nj/?share_source=copy_web&vd_source=0235d88ba3487903dc658fe856ba0135
UP:跟峰哥学编程

你可能感兴趣的:(python,开发语言)