Python 面向对象

1. dir 内置函数

  • 在Python 中可以使用以下两个方法验证:
  1. 在标识符 / 数据 后输入一个 .,然后按下 TAB键,iPython 会提示该对象能够调用的方法列表
  2. 使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法

__方法名__格式的方法是 Python 提供的 内置方法 / 属性

序号 方法名 类型 作用
01 __new__ 方法 创建对象时,会被自动调用
02 __init__ 方法 对象被初始化时,会被自动调用
03 __del__ 方法 对象被从内存中销毁前,会被 自动调用
04 __str__ 方法 返回对象的描述信息,print函数输出使用

2. 定义简单的类

2.1 定义只包含方法的类
  • 在 Python 中要定义一个只包含方法的的类,语法格式如下:
class 类名:
	def 方法1(self, 参数列表):
		pass
	
	def 方法2(self, 参数列表):
		pass

注:类名的命名规则 要符号 大驼峰命名法

2.2 创建对象
  • 当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
对象变量 = 类名()
2.3 引用
  • 在 Python 中使用类 创建对象之后,接收对象的 变量中 仍然记录的是 对象在内存中的地址
  • 使用 print 输出 对象变量,默认情况下,是能够输出这个变量 引用的对象 是由哪一个类创建的对象,以及 在内存中的地址(十六进制表示)

提示:在计算机中,通常使用 十六进制 表示内存地址

  • 十进制 和 十六进制都是用来表达数字的,只是表示的方式不一样

  • 十进制 和 十六进制的数字之间可以来回转换

  • %d 可以 以10进制 输出数字

  • %x 可以 以 16进制 输出数字

3.方法中的 self 参数

3.1 给对象增加属性
  • 在Python 中,要 给对象设置属性,只需要在 类的外部的代码 中直接通过 .设置一个属性即可

例如:

类名.属性 = "需要设置的内容"

vvcat.name = "VVcat"

注意:

  • 对象包含的属性,应该封装在类的内部,不建议直接在类的外部设置属性
  • 如果在类的外部设置属性,可能在运行时,没有找到属性,程序会报错
3.2 使用 self 在方法内部输出每个类的属性

由哪一个对象调用的方法,方法内的 self 就是哪一个对象的引用

  • 在类封装的方法内部,self 就表示 当前调用方法的对象自己
  • 调用方法时,不需要传递 self 参数
  • 在方法内部
    • 可以通过 self. 访问对象的属性
    • 也可以通过 self. 调用其他的对象方法

例如:

class Person:

    def eat(self):
        # 哪一个对象调用的方法,self就是哪一个对象的引用
        print("%s 要吃饭" % self.name)

    def drink(self):
        print("%s 要喝水" % self.name)


# 创建人对象
vvcat = Person()

# 可以使用 .属性名 利用赋值语句就可以了
vvcat.name = "vvcat"

vvcat.eat()
vvcat.drink()

print(vvcat)

4.初始化方法

4.1初始化方法

  • 当使用 类名() 创建对象时,会自动执行以下操作:
    1. 为对象在内存中, 分配空间——创建对象
    2. 为对象的属性 设置初始值——初始化方法(init)
  • 这个 初始化方法 就是 __init__方法, __init__ 是对象的内置方法

例如:

class Person:
	
	def __init__(self):
		print("这是一个初始化方法")
		
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
vvcat = Person()
4.2在初始化方法内部定义属性
  • init 方法内部使用 self.属性名 = 属性的初始值 就可以 定义属性
  • 定义属性之后,再使用 类创建对象,对象就会拥有该属性

示例:

class Person:
	def __init__(self):
		print("这是一个初始化方法")
		
		# self.属性名 = 属性的初始值
		self.name = "vvcat"
		
	def eat(self):
		print("%s 要吃饭" % self.name)
		
# 使用类名() 创建对象的时候,会自动调用初始化方法 __init__
vvcat = Person()

print(vvcat.name)
vvcat.eat()
4.3 初始化的同时设置初始值
  • 如果需要在 创建对象的同时,就设置对象的属性,可以对 /_/init_ 方法进行改造
  1. 把希望设置的属性值,定义成 /_/_init__方法的参数
  2. 把方法内部使用 self.属性 = 形参 接收外部传递的参数
  3. 在创建对象时,使用 类名(属性1, 属性2…) 调用
class Person:
    def __init__(self, new_name):
        print("这是一个初始化方法")

        # self.属性名 = 属性的初始值
        # self.name = "Tom"
        self.name = new_name

    def eat(self):
        print("%s 爱吃饭" % self.name)


# 使用类名() 创建对象的时候,会自动调用初始化方法 __init__
vvcat = Person("vvcat")

print(vvcat.name)
vvcat.eat()

zhangsan = Person("张三")
zhangsan.eat()

你可能感兴趣的:(OpenCV)