面向对象

1.面向对象

#结构上理解:分两部份。

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

#函数vs面向对象:

1.函数封装一个功能,面向对象封装多个相关的功能。

2.面向对象抽象,他是一种理想,站在上帝的角度去理解与他。

3.程序可扩展,对象都是一个个独立的,耦合性,差异性。

2.类,对象

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

对象:是类的具体体现。

3.类名,对象的使用

#一个公共框架,一个公共模型。

# class Person:
#     walk_way = '直立行走'
#     animal = '高级动物'
#     language ='语言'
#     def eat(self):
#         print('该吃吃,该喝喝,啥事别往心里去')
#     def work(self):
#         print('人类都需要工作')

类名:

1.查看类中所有属性及方法__dict__

# print(Person.__dict__)
# print(Person.__dict__['language'])

2.查看,(增删改)类中的某个,某些属性用万能的点(.)

# print(Person.animal)  # 查
# print(Person.language)

3.改

# Person.animal = '低级动物' # 改

4.增

# Person.name = 'alex'  # 增
# print(Person.name)

5.删

# del Person.walk_way  # 删
# print(Person.__dict__)

#操作方法:一般不通过类名操作。

对象:给对象封装属性的。

    def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
        self.name1 = name
        self.age1 = age
        self.eye1 = eye

实列化过程:

class Person:
    animal = '高级动物'
    walk_way = '直立行走'
    language = '语言'
    def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
        self.name1 = name
        self.age1 = age
        self.eye1 = eye
    def eat(self):
        # print(self)
        print('该吃吃,该喝喝,啥事别忘心里搁')
    def work(self):
        print('人类都需要工作。。。')
# obj = Person('alex',1000,'小眼睛')  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
# print(obj)
# print(obj.name1)

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

1.在内存中开辟了一个对象空间

2.自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。

3.执行__init__方法 给对象空间封装相应的属性。

#对象

对象操作对象空间

对象查看对象空间所有属性 __dict__

对象操作对象的某个属性 增删改查 万能的点.

# obj.sex = '男'  # 增
# del obj.eye1  # 删
# obj.eye1 = '大一点'  # 改
# print(obj.name1)
# print(obj.__dict__)

对象操作类空间的属性 只能查

对象操作类空间的方法

print(obj)

print(obj.eat())

4.类名称空间,对象名称空间

#公用模板,公共框架

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('谁施展了一个攻击')
    def pen(self):
        self.pen=10000
gailun = GameRole('德玛西亚','草丛伦',1000,75)
yasuo = GameRole('艾欧尼亚','托儿索',500,150)
penzi = GameRole('中国','键盘侠',10,100)
penzi.pen()
print(penzi.__dict__)

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

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

3.类不能调用对象的属性。

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

5.不同类实例化的对象有可能互相访问。

6.给对象封装属性:__init__ 任意位置。

原文地址:https://www.cnblogs.com/caoshitong/p/9526170.html