码迷,mamicode.com
首页 > 编程语言 > 详细

python之面向对象

时间:2018-08-23 21:04:56      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:game   OLE   对象   静态   函数   ide   image   elf   结构   

一、面向对象初识

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

class A:
    name = ‘alex‘  # 静态属性,静态变量,静态字段。

    def func1(self):  # 函数,动态属性,方法
        pass

 

函数vs面向对象:

  1. 函数封装一个功能,而面向对象封装多个相关功能。
  2. 面向对象抽象,它是一种思想,站在上帝的角度去理解它。
  3. 程序可扩展,对象都是一个个独立的。耦合性,差异性。
技术分享图片
def ragister(argv):
    pass


def login(argv):
    pass


def 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(‘工作‘)

  

类名的使用:

  1. 查看类中的所有属性及方法 __dict__
  2. 查看,(增删改)类中的某个,某些属性,某个方法,用万能的点 "."
  3. 操作方法,一般不通过类名操作
技术分享图片
 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)
类名的使用

 

对象的使用:

 

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

  1. 在内存中开辟了一个对象空间
  2. 自动执行类中的 __init__ 方法,并且将对象空间传给self参数,其他参数手动传入
  3. 执行 __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 = name
10         self.age1 = age
11 
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 = name
10         self.age1 = age
11 
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)  # 666

gailun.rule = gailun.rule
print(gailun.rule)   # 游戏规则
gailun.nickname = 盖伦
print(gailun.nickname)
# 对象只能查看类中的属性,不能增删改类中的属性



# 2. 类能不能调用对象的属性?  不能
# print(GameRole.area)  不能

# 3. 对象与对象之间可不可以互相调用
# 同一个类实例化出来的对象是不能互相访问的。
# 但是不同类形成的实例化对象有可能互相访问。


# 给对象封装属性: __init__ , 任意位置
View Code

 

python之面向对象

标签:game   OLE   对象   静态   函数   ide   image   elf   结构   

原文地址:https://www.cnblogs.com/eaoo/p/9526035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!