面向对象的初识
面向对象
结构上的理解:面向对象:两部分
class A:
name='wang' #静态属性,静态变量,静态字段
def func1(self): #函数,动态属性,方法
pass
函数vs面向对象
def register(argv):
pass
def login(argv):
pass
def shoppingcar(argv):
pass
class Shopping_Car:
def __init__(self):
pass
def register(self):
pass
def login(self):
pass
def shopping(self):
pass
1.函数封装一个功能。面向对象封装多个相关的功能。
2.面向对象抽象,它是一种思想,站在上帝的角度去理解他。
3.程序可扩展,对象都是一个个独立的,耦合性,差异性。
类,对象。
类:具有相同属性或者功能的一类实物。
对象:对象是类的具体表现。
一个公共框架,一个模型
class Person:
animal='高级动物'
walk='直立行走'
language='语言'
def eat(self):
print('该吃吃,该喝喝,啥事别往心里搁')
def work(self):
print('人都需要工作。。')
类名
1.查看类中的所有属性及方法__dict__
print(Person.__dict__) #{'__module__': '__main__', 'animal': '高级动物', 'walk': '直立行走', 'language': '语言', 'eat': <function Person.eat at 0x0000024943D0FA60>, 'wo
print(Person.__dict__['animal']) #高级动物 #通过__dict__方式,单独的属性可以查,但是不能增删改
工作中,学习中,一般用到__dict__查看类中的所有属性及方法,不进行其他操作
2.查看,(增删改)类中的某个,某些属性用 万能的点。
print(Person.animal) #查
print(Person.language)
Person.name='alex' #增
print(Person.name)
Person.animal='低级动物' #改
del Person.walk #删
3.操作方法:一般不通过类名操作!!!
对象
class Person:
animal='高级动物'
walk='直立行走'
language='语言'
def __init__(self,name,age,eye): --->功能:给对象封装属性
self.name1=name
self.age1=age
self.eye1=eye
def eat(self):
print('该吃吃,该喝喝,啥事别往心里搁')
def work(self):
print('人都需要工作。。')
obj=Person('alex',1000,'小眼睛') #这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)
print(obj) #<__main__.Person object at 0x000001ECB7690978>
print(obj.animal) #高级动物
实例化过程内部进行了三个阶段:
1.在内存中开辟了一个对象空间,只有一个类对象指针
2.自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。
3.执行__init__方法,给对象空间封装相应的属性。
对象:
对象操作对象空间
对象查看对象空间所有属性 __dict__
print(obj.__dict__) #{'name1': 'alex', 'age1': 1000, 'eye1': '小眼睛'}
对象操作对象的某个属性 增删改查 万能的点
obj.sex='男' #增
del obj.eye1 #删
obj.age1=500 #改
print(obj.name1) #查
print(obj.__dict__)
对象操作类空间的属性 只能查
print(obj.animal) #高级动物
obj.animal='低级动物' ---->给对象增加 不是改变类
print(obj.animal) #低级动物
print(obj.__dict__) #{'name1': 'alex', 'age1': 1000, 'eye1': '小眼睛', 'animal': '低级动物'}
print(Person.__dict__) #{'__module__': '__main__', 'animal': '高级动物', 'walk': '直立行走', 'language': '语言', '__init__': <function Person.__init__ at 0x000002C6D261FA60>
对象操作类空间的方法
print(obj) #<__main__.Person object at 0x000002255B3D0978>
obj.eat() #该吃吃,该喝喝,啥事别往心里搁
公用模板,公共框架
class GameRole:
rule = '游戏规则'
hp = 1800
def __init__(self,area,nickname,hp,ad):
self.area = area
self.nickname = nickname
self.hp = hp
self.ad = ad
def attack(self):
print('谁施展了一个攻击')
def pen(self):
self.pen=10000
gailun = GameRole('德玛西呀','草丛伦',1000,75) #对象名不恰当 仅仅为了容易区分
yasuo = GameRole('艾欧尼亚','托儿所',500,150)
1.对象为什么能调用类中的属性与方法而且只是调用,不能改变
gailun.属性名 先从自己空间去找,没有此属性会通过类对象指针去找 类中找不到,会去父类找
print(gailun.hp) #1000
gailun.attack=666 #给对象增加一个属性 attack=666
print(gailun.attack) #666
对象只能查看类中的属性,不能增删改类中的属性
2.类不能调用对象的属性
3.同一个类实例化出来的对象之间不能够互相访问,不同类实例化的对象有可能互相访问。
给对象封装属性:__init__ 任意位置

清风深知杨柳意,啤酒龙虾难相聚。

浙公网安备 33010602011771号