# 23. 面向对象初始
# 面向对象
什么是对象,面向对象分为,类跟对象二种
大神们一直说,学习面向对象,一定要用上帝思维去学
那什么是类
类,具有相同属性和技能的一类事物,简单来说就是一个大类,像人,人的大类就是人类,人类这类就包含了所有人
那什么是对象
对象。简单来说就是指单独的对象,比如,自己就是一个对象,自己的大类就是人类
# 面向对象写法
class 类名:
##类体:分为二部分:变量部分,方法(函数)部分
变量 = 变量
def 函数名(self): ## self类中默认函数的第一个位置参数
函数体
# 站在类的角度来操作
class so:
name = "人类"
age = "一百岁左右"
faile = "信仰"
def wo(self):
print("人与人的区别到底是什么")
def eo(self):
print("你说的,明天会更好")
# 查看类中的所有内容 - dict
print(so.__dict__)
执行结果:
{'__module__': '__main__', 'name': '人类', 'age': '一百岁左右', 'faile': '信仰', 'wo': <function so.wo at 0x0000015A0899BAE8>, 'eo': <function so.eo at 0x0000015A0899BD90>, '__dict__': <attribute '__dict__' of 'so' objects>, '__weakref__': <attribute '__weakref__' of 'so' objects>, '__doc__': None}
以上实例,使用dict函数来查看类中的所有内容
# 也可以使用__dict__ 来操作
注意:因dict操作类只能只读权限,所以一般只是用__dict__来查看类中的所有内容
print(so.__dict__["name"])
执行结果:
人类
# 使用 . 来操作类的内容
. 符号,也被称为万能的点 .
可以使用 . 来能对类中的变量进行增删改查操作
# 查找
print(so.name)
执行结果:
人类
# 使用类名来查看类中方法
一般人不会使用类名来查看类中的方法
print(so.wo(1))
执行结果:
人与人的区别到底是什么
None
# 增加
so.mag = "梦想"
print(so.mag)
执行结果:
梦想
# 修改
so.age = "一百二十岁"
print(so.age)
执行结果:
一百二十岁
# 删除
del so.faile
print(so.__dict__)
执行结果:
{'__module__': '__main__', 'name': '人类', 'age': '一百岁左右', 'wo': <function so.wo at 0x000002348916BAE8>, 'eo': <function so.eo at 0x000002348916BD90>, '__dict__': <attribute '__dict__' of 'so' objects>, '__weakref__': <attribute '__weakref__' of 'so' objects>, '__doc__': None}
# 站在对象的角度来操作
class so:
name = "人类"
age = "一百岁左右"
faile = "信仰"
def __init__(self,nameb,ageb,faileb):
self.nameb = nameb
self.ageb = ageb
self.faileb = faileb
print(self)
print("__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行")
def wo(self):
print("人与人的区别到底是什么")
def eo(self):
print("你说的,明天会更好")
# self参数
这里要先说一个点
类中的办法也就是函数,创建的时候都会默认带有self参数,这参数是用来接收内存地址的,也不是固定是这个参数来接收的,但默认是第一个参数来接收
ll = so(1,"江心",18,"唯我")
print(ll)
执行结果:
__init__() takes 4 positional arguments but 5 were given
以上实例,报错,为什么会报错,报错结果的意思是:init_()接受4个位置参数,但给出了5个,因为第一个参数是用 来接收内存地址的,默认是有数据的
# 实例化对象
实例化对象也称为实例化过程,指的就是创建一个对象的过程
ll = so("江心",18,"唯我")
print(ll)
执行结果:
<__main__.so object at 0x00000297446DABE0>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
<__main__.so object at 0x00000297446DABE0>
注意:当类加上()执行时,会产生一个名称空间,这过程也被称为实例化过程
so类要赋值给ll变量时,先要把自身用执行的先执行一遍,在返回内存地址给ll变量,这时我们就可以拿ll变量来操作
# 总结一下
- 类名+()执行会产生一个实例(对象,对象空间)
- 自动执行类中的__init__方法,将对象空间传给__init__的self参数,就是把内存地址传给了self参数
- 给对象封闭相应的属性
# 使用__dict__来查看相对应的全部方法
ll = so("江心",18,"唯我")
print(ll.__dict__)
执行结果:
<__main__.so object at 0x000002D4209DAC50>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
{'nameb': '江心', 'ageb': 18, 'faileb': '唯我'}
# 使用 . 来操作对象
. 符号,也被称为万能的点 .
可以使用 . 来能对对象中的变量进行增删改查等操作
# 查找
ll = so("江心",18,"唯我")
print(ll.nameb)
执行结果:
<__main__.so object at 0x000002937B50AC50>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
江心
# 增加
ll = so("江心",18,"唯我")
ll.song = "自定"
print(ll.song)
执行结果:
<__main__.so object at 0x000001E051A1AC88>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
自定
# 修改
ll = so("江心",18,"唯我")
ll.nameb = "江凡"
print(ll.nameb)
执行结果:
<__main__.so object at 0x00000144DD1DAC50>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
江凡
# 删除
ll = so("江心",18,"唯我")
del ll.nameb
print(ll.__dict__)
执行结果:
<__main__.so object at 0x000001B0529CAC50>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
{'ageb': 18, 'faileb': '唯我'}
# 使用对象来调取类中的方法
ll = so("江心",18,"唯我")
ll.wo()
执行结果:
<__main__.so object at 0x000002148B82AC18>
__init__函数是一个类中默认执行的函数,只要类被执行,这函数默认执行
人与人的区别到底是什么
← 介绍 24. 对象、类名称空间,组合 →