python之面向对象,,一、面向对象初识从结


一、面向对象初识

从结构上理解:面向对象分为两部分

class A:    name = ‘alex‘  # 静态属性,静态变量,静态字段。    def func1(self):  # 函数,动态属性,方法        pass

 

函数vs面向对象:

函数封装一个功能,而面向对象封装多个相关功能。面向对象抽象,它是一种思想,站在上帝的角度去理解它。程序可扩展,对象都是一个个独立的。耦合性,差异性。技术分享图片
def ragister(argv):    passdef login(argv):    passdef shoppingcar(argv):    pass
函数技术分享图片
class Shopping_Car:    def __init__(self):   # 特殊方法        pass    def ragister(self):        pass    def login(self):        pass    def shoppingcar(self):        pass
面向对象

类以及对象:

类:具有相同属性或功能的一类实物

对象:对象是类的具体体现。

二、类名与对象的使用

首先,先来定义一个类

# 一个公共框架,一个公共模型class Person:    animal = ‘高级动物‘    walk_way = ‘直立行走‘    language = ‘语言‘    def eat(self):        print(‘吃饭‘)    def work(self):        print(‘工作‘)

  

类名的使用:

查看类中的所有属性及方法 __dict__查看,(增删改)类中的某个,某些属性,某个方法,用万能的点 "."操作方法,一般不通过类名操作技术分享图片
 1 # 一个公共框架,一个公共模型 2 class Person: 3     animal = ‘高级动物‘ 4     walk_way = ‘直立行走‘ 5     language = ‘语言‘ 6  7     def eat(self): 8         print(‘吃饭‘) 9 10     def work(self):11         print(‘工作‘)12 13 # 类名14 15     # 1.查看类中所有的属性及方法 __dict__16 17 print(Person.__dict__)18 print(Person.__dict__[‘animal‘])  # 通过__dict__方式 单独的属性及方法可以查但是不能增删改19 # 工作中,学习中一般用到__dict__ 就是查看类中所有的属性及方法,不进行其他操作。20 21     # 2.查看,(增删改)类中某个,某些属性,某个方法,用万能的点 .22 print(Person.animal)  # 查23 print(Person.language)24 Person.name = ‘alex‘    # 增25 print(Person.name)26 Person.animal = ‘低级动物‘  # 改。虽然上面没改,但是在内存级别已经改动了27 print(Person.animal)28 # del Person.walk_way  # 删29 30     # 3.操作方法 一般不通过类名操作31 # Person.__dict__[‘work‘](888)   # 不建议__dict__执行方法32 Person.work(999)33 Person.eat(999)
类名的使用

对象的使用:

实例化过程内部进行了三个阶段:

在内存中开辟了一个对象空间自动执行类中的 __init__ 方法,并且将对象空间传给self参数,其他参数手动传入执行 __init__ 方法,给对象空间封装相应的属性。技术分享图片
 1 class Person: 2     animal = ‘高级动物‘ 3     walk_way = ‘直立行走‘ 4     language = ‘语言‘ 5  6     def __init__(self,name,age):  # 功能:给对象封装属性 7         print(self)  # self = Person() 地址是一样的 8         print(666) 9         self.name1 = name10         self.age1 = age11 12     def eat(self):13         print(‘吃饭‘)14 15     def work(self):16         print(‘工作‘)17 18 19 obj = Person(‘alex‘, 37)  # 这个过程是一个实例化过程,它会实例化一个对象。(它会在内存实例化一个对象空间)20 print(obj)21 print(obj.name1)
实例化过程技术分享图片
 1 class Person: 2     animal = ‘高级动物‘ 3     walk_way = ‘直立行走‘ 4     language = ‘语言‘ 5  6     def __init__(self,name,age):  # 功能:给对象封装属性 7         print(self)  # self = Person() 地址是一样的 8         print(666) 9         self.name1 = name10         self.age1 = age11 12     def eat(self):13         print(‘吃饭‘)14 15     def work(self):16         print(‘工作‘)17 18 obj = Person(‘alex‘, 37)19 # 对象:20 #     对象操作对象空间21 #         对象查看对象空间的所有属性 __dict__22 print(obj.__dict__)23         # 对象操作对象的某个属性 增删改查  万能的点 .24 obj.sex = ‘nan‘  # 增25 print(obj.__dict__)26 # del obj.sex  # 删27 obj.age1 = 99  # 改28 print(obj.__dict__)29 print(obj.name1)  # 查30 31 #     对象操作类空间的属性  只能查32 print(obj.animal)33 34 35 #     对象操作类空间的方法36 obj.eat()
对象的使用

三、类名称空间,对象名称空间

1.对象为什么能调用类中的属性与方法?

  obj.属性名 先从自己空间去找,没有此属性它会通过类对象指针从类中去找,类中找不到,会从父类去找。

  对象只能查看类中的属性,不能增删改类中的属性。

2.类能不能调用对象的属性?

  不能

3.对象与对象之间可以不可以互相调用?

  同一个类实例化出来的对象是不能互相访问的。

  但是不同类形成的实例化对象有可能互相访问。

类与对象空间:

技术分享图片

技术分享图片
class GameRole:    rule = ‘游戏规则‘    def __init__(self,area,nickname,hp,ad):        self.area = area        self.nickname = nickname        self.hp = hp        self.ad = ad    def attack(self):        print(‘谁施展了一个攻击‘)gailun = GameRole(‘德玛西亚‘, ‘草丛伦‘, 1000, 75)yasuo = GameRole(‘艾欧尼亚‘, ‘托儿所‘, 500, 150)# 1.对象为什么能调用类中的属性与方法# obj.属性名  先从自己空间去找,没有此属性它会通过类对象指针从类中去找,类中找不到,会从父类去找。print(gailun.hp)gailun.attack = 666  # 给对象增加属性print(gailun.attack)  # 666gailun.rule = gailun.ruleprint(gailun.rule)   # 游戏规则gailun.nickname = ‘盖伦‘print(gailun.nickname)# 对象只能查看类中的属性,不能增删改类中的属性# 2. 类能不能调用对象的属性?  不能# print(GameRole.area)  不能# 3. 对象与对象之间可不可以互相调用# 同一个类实例化出来的对象是不能互相访问的。# 但是不同类形成的实例化对象有可能互相访问。# 给对象封装属性: __init__ , 任意位置
View Code

python之面向对象

评论关闭