当前位置:   article > 正文

韩顺平 | 零基础快速学Python(12) OOP基础_韩顺平python书籍

韩顺平python书籍

面向对象编程-基础

类与对象

类提供了把数据和功能绑定在一起的方法。创建新类时创建了新的对象类型,从而能够创建该类型的新实例/对象
类时抽象的概念,作为数据类型代表一类事物;对象时具体实际的,作为实例代表具体事物;类是对象的模板,对象是类的个体,对应一个实例。
对象在内存中的存在形式:
在这里插入图片描述

属性/成员变量

类中定义的属性(变量),也称为成员变量
属性名 = 值 如果没有值可以赋值None,None是Python的内置常量,通常被用来代表空值的对象

类的定义

class 类名:
	属性/成员变量...
	行为/成员方法...
  • 1
  • 2
  • 3

对象的传递机制

在这里插入图片描述

class Person:
	age = None
	name = Name

a = Person()
a.age = 10
a.name = "jack"
b = a 
print(b.name) #jack
b.age = 200
b = None # NoneType
print(a.age) # 200
print(b.age) #报错
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

对象的布尔值

Python一切皆对象,所有的对象都有一个布尔值,通过内置函数bool()可获取对象的布尔值
False:False、数值0、None、空数据容器

成员方法

类中定义的行为(函数),称为成员方法/方法。

def 方法名(self, 形参列表):
	方法体
  • 1
  • 2
  • Python也支持对象动态的添加方法,注意只是针对该对象添加方法 对象.添加的方法名 = 指定方法名
class Person:
	age = None
	name = Name
	def ok(self):
		print("ok")

def hi:
	print("hi")
	
p = Person()
p.m1 = hi
print(type(p.m1), type(hi)) #<class 'function'> <class 'function'>
print(type(p.ok)) # <class 'method'> 运行机制一样,只是名称叫法不同
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

self

self表示当前对象本身,在成员方法内,访问对象的属性/成员变量self.属性/成员变量

  • 当我们通过对象调用方法时,self会隐式传入
  • 定义成员方法时,需要写上self,如果不写,则需要使用@staticmethod标注,否则会报错。
  • @staticmethod将方普通法转换为静态方法。静态方法不会接收隐式第一个参数。静态方法相比普通方法,处额可以通过对象调用,还可以通过类名调用。
class Dog:
	name = "哈士奇"
	age = 2

	def info(self, name):
		print(f"name信息->{name}")
		
	@staticmethod
	def ok():
		print("ok")

dog = Dog()
dog.info("德牧")
dog.ok()
Dog.ok()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

对象作为传参传递

在这里插入图片描述

作用域

成员变量/属性:类中定义的变量,作用域为整个类
局部变量:一般指成员方法中定义的变量,作用域为当前方法
属性和局部变量可以重名,访问的时候带上self代表访问属性

构造方法

需求:用类创建对象时,即指定属性
在初始化对象时,会自动执行__init__方法,传入的参数会自动传递给__init__方法

class Person:
	name = None
	age = None
	
	def __init__(self, name, age):
		print(f"__init__方法执行了 {name} {age}")
		self.name = name
		self.age = age

p1 = Person("kobe", 20) # __init__方法执行了 kobe 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
class Person:
	# 类没定义属性
	# name = None
	# age = None																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																									
	def __init__(self, name, age):
		print(f"__init__方法执行了 {name} {age}")
		# 此处动态生成属性
		self.name = name
		self.age = age

p1 = Person("kobe", 20) # __init__方法执行了 kobe 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/626785
推荐阅读
相关标签
  

闽ICP备14008679号