Knight_day15
作者:互联网
【函数汇总、面向对象初识、类名的使用、对象的使用、类名称空间,对象名称空间】
- 函数汇总
https://www.processon.com/view/link/62109b5be401fd587b38e325
- 面向对象初识
class A:
name = 'alex' #静态属性
def fun(self): #方法
pass
def __init__(slef): #特殊方法
pass
特点:
1.函数封装一个功能,面向对象封装多个相关功能
2.抽象,是一种思想,要站在上帝视角理解。共同点:共同属性。不同点:实例化对象。
3.程序可扩展,对象都是一个个独立的。耦合性,差异性。
类,对象:
类:具有相同属性或功能的一类事物。
对象:对象是类的具体体现。
- 类名的使用
一个框架,一个模型
class Person:
#属性是一些名词
animal = '高级动物'
walk_way = '直立行走'
language = '语言'
#方法是一些动词
def eat(self):
print('该吃吃该喝喝')
def work(self):
print('人类都需要工作')
类名:
1.查看类中所有属性和方法 __dict__
Person.__dict__
Person.__dict['animal'] #单独可以查,不能增删改
一般用到__dict__就是查看类中所有属性及方法,不进行其他操作
2.操作类中某个,某些属性,用万能的点
Person.animal 查
Person.name = 'alex' 增
Person.animal = ‘低级动物’
del Person.walk_way 删
3.操作方法(一般不通过类名操作,而是通过对象操作)
Person.__dict__['work'](由于self,此处需随便传个参数) #不建议
Person.work(666)
类名()和__init__:
类里一般必有__init__(self): #特殊方法,给对象封装属性
obj = 类名() #这个过程是一个实例化过程,会实例化一个对象(在内存里实例化一个对象空间)
实例化过程在内存中分三个阶段:
1.在内存中开辟一个对象空间
2.自动执行类中__init__方法,并且将对象空间(地址)自动传给self参数,其他参数手动传入
3.执行__init__方法,给对象空间封装相应的属性。
- 对象的使用
对象操作对象空间
对象查看对象空间的所有属性
obj.__dict__
对象操作对象空间的某个属性(增删改查),用万能的点
obj.sex = '男' #增
对象操作类空间的属性
只能查,不能改(其实是在对象空间内增)
对象操作类空间的方法
只要类中方法第一个参数是self(粉色),都会自动把对象(地址)传进去(99%)
obj.eat()
- 类名称空间,对象名称空间
公共模板,公共框架
class GmaeRole:
实例化游戏人物
1.对象为什么能调用类中属性和方法且只能调用,不能改变?
obj.属性名:先从自己空间去找,没有此属性再通过类对象指针从类去找,类中找不到,会从父类去找。
obj.类中属性/方法 = ... 此操作实际是给对象增加一个属性,且再次obj.该类中属性/方法 时,得到的是对象中的值。
对象只能查看类中属性,不能增删改
2.类能不能调用对象的属性?
不能
3.对象与对象之间可不可以相互调用?
同一个类实例化的对象之间不能互相访问
不同类实例化的对象之间可能互相访问
给对象封装属性:
__init__
任意位置:对象.新属性 = 值
在类中单独一个封装该属性的函数(使用self.新属性)
标签:__,Person,对象,Knight,self,day15,类中,属性 来源: https://www.cnblogs.com/hlzzhq/p/15913023.html