python之面向对象初识

一、面向对象初识
1、结构上 面向对象分成两部分:属性、方法

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

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

2、函数与面向对象:
  1,函数封装一个功能,而面向对象封装多个相关的功能。
  2,面向对象比较抽象,它是一种思想,站在上帝的角度去理解它。
  3,面向对象程序可扩展,对象都是一个个独立的。耦合性,差异性。

函数:
def register(argv):
    pass

def login(argv):
    pass

def shoppingcar(self):
        pass

面向对象:
class Shopping:
    def __init__(self):  # 特殊方法
        pass

    def register(self):
        pass

    def login(self):
        pass

    def shoppingcar(self):
        pass

3、类与对象:
类:具有相同属性或者功能的一类实物。
对象:对象是类的具体体现。

二、类名、对象的使用
1、类可以理解为:一个公共框架,一个公共模型

class person:
    animal = ‘高级动物‘
    walk_way = ‘直立行走‘
    language = ‘语言‘

    def eat(self):
        print(‘小心吃屎你‘)

    def play(self):
        print(‘天天就知道玩‘)

2、类名的使用
1,查看类中的所有属性及方法 __dict__
print(person.__dict__)         # 查看类中的所有属性及方法

print(person.__dict__[‘animal‘])    # 通过__dict__方式可以查看单独的属性及方法,但是不能进行增删改

person.__dict__[‘animal‘] = ‘低级动物‘   # 改:报错

person.__dict__[‘name‘] = ‘xiaoming‘    # 增:报错

del person.__dict__[‘animal‘]     # 删:报错

工作中,学习中一般用到 __dict__只是用来查看类中的所有属性及方法,不进行其他操作。

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

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

person.name = ‘xiaoming‘  # 增
print(person.name)

person.language = ‘中文‘ #改
print(person.language)

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

3,操作方法,用类名可以执行方法,但是一般不通过类名操作!!!
person.__dict__[‘eat‘](111)      # 不建议通过__dict__执行方法
person.play(666)

3、对象的使用

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(‘小心吃屎你‘)

    def play(self):
        print(‘天天就知道玩‘)

obj = person(‘xiaobai‘,1000,‘小眼睛‘)  # 这个过程是一个实例化过程,他会实例化一个对象(会在内存实例化一个对象空间)。
print(obj)  #obj是对象空间的地址
print(obj.name1)  # 通过对象查看属性

实例化过程内部进行了三个阶段:
  1,首先遇到 类名() 就会在内存中开辟一个对象空间,只有一个类对象指针(用一个变量接收这个对象空间地址)
  2,然后自动执行类中的__init__方法,并且将对象空间地址自动传给self参数,其他参数手动传入。
  3,最后执行__init__方法 给对象空间封装相应的属性。

对象操作对象空间:

1,对象查看对象空间所有的属性也可用 __dict__
print(obj.__dict__)       # 返回一个包含对象空间所有属性的字典

2,对象操作对象的某个属性(增删改查)用万能的点.
obj.sex = ‘男‘   # 增
print(obj.sex)

del obj.eye1    # 删
print(obj.__dict__)

obj.age1 = 18   # 改
print(obj.age1)

print(obj.name1)     #查
print(obj.__dict__)  #查

3,对象操作类空间的属性:只能查
print(obj.animal) #查

obj.animal = ‘低级动物‘       # 想要这样改类的属性,是改不了的,它会为对象生成一个animal的属性并不会改变类的                                                 animal
print(obj.animal)          # 低级动物
print(person.animal)   # 高级动物

del obj.language       # 删:报错

4,对象操作类空间的方法:对象.方法()
obj.eat()

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

公用模板,公共框架
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)  #实例化对象gailun
yasuo = GameRole(‘艾欧尼亚‘,‘托儿所‘,500,89)   #实例化对象yasuo

一张图片解释:

1,对象能调用类中的属性与方法,但是不能修改类的属性和方法
实例化一个对象的时候,会建立对象指向类的指针,gailun.属性名,先从自己空间去找,
没有此属性它会通过类对象指针从类去找,类中找不到,会从父类去找。

gailun.attack = 666  # 这里并不是调用类的attack方法,而是给对象增加一个属性 attack = 666
print(gailun.attack)  # 666

gailun.rule = gailun.rule  # 相当于gailun.rule = ‘游戏规则‘  对象.属性名=‘游戏规则‘
print(gailun.rule)

gailun.nikename = ‘盖伦‘  #修改对象的属性
print(gailun.nickname)

2,类能不能调用对象的属性? 不能,因为类没有指向对象的指针
print(GameRole.area)   # 报错

3,对象与对象之间可不可互相调用?
同一个类实例化出来的对象之间是不能互相访问的。
不同类实例化的对象有可能互相访问。

4,给对象封装属性:__init__ 任意位置。

原文地址:https://www.cnblogs.com/yidashi110/p/10092265.html

时间: 2024-08-03 05:04:01

python之面向对象初识的相关文章

Python中面向对象初识到进阶

面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数2 # # def 方法名(self):pass # # def 方法名2(self):pass # # 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西 # #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法 # #括号里传参数,参数不需要传self,其他与

python基础之面向对象初识

一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的

Python -- 面向对象:初识

面向对象:初识 回顾: 面向过程式编程 vs 函数式编程 通过对比可知:函数式编程较面向过程式编程最明显的两个特点: 减少代码的重复性 增强代码的可读性 # 面向过程式编程,测量对象元素个数 s = 'aasdasdaskfl' count = 0 for i in s: count += 1 l1 = [1,2,3,4] count = 0 for i in l1: count += 1 # 函数式编程 def func(s): count = 0 for i in s: count += 1

Python之面向对象(一)面向对象初识

6.2 面向对象初识 面向对象初识 回顾面向过程编程VS函数式编程 面向过程编程 # 面向过程编程 测量对象的元素个个数. s1 = 'fjdsklafsjda' count = 0 for i in s1: count += 1 l1 = [1,2,3,4] count = 0 for i in l1: count += 1 #面向过程编程 函数式编程 def func(s): count = 0 for i in s: count += 1 return count func('fdsafd

day06_雷神_面向对象初识

day_06 递归函数 自己用自己.一般递归100多次,都没有解决的问题,放弃递归. count = 0 def func1(): global count count += 1 print(count) func1() func1() 默认递归深度:998 设置递归深度 import sys sys.setrecursionlimit(20000) count = 0 def func1(): global count count += 1 print(count) func1() func1

My way to Python - Day05 - 面向对象-思维导图

My way to Python - Day05 - 面向对象 思维导图

Python -面向对象(一 基本概念)

一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言. 由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁,优美(语法很灵活).所以使用Python能够高速地编写出可执行代码.与C/C++相比.Python程序的执行速度比較慢,一门语言既然能够生存下来.就有它自己的原因,Python语言也一样. 当今的计算机处理速度已经很快.对某些任务来说.执行速度并非首要考虑的因素.比方说为了实现数据库訪问的自己主

Python的面向对象3

接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外部访问,但是,从类的内部是可以访问的,除了可以定义实例的属性,还可以定义实例的方法. 其实,实例的方法就是在类中定义函数,它的第一个参数永远是self,指向调用该方法的实例本身,其他参数和普通参数一致. get_name()就是一个实例方法,它的第一个参数是self,这个参数不需要显示传入 调用实例

个人理解的python的面向对象

在学习到python的面向对象的时候,发现python的类的的属性是有区分类的属性及对象的属性的,代码示例如下: class test: a = 'test' def test1(self,a): self.a = a def show(self): print(test.a) def show1(self): test.a = 'for test' print(test.a) t = test() t.a = 'zjc' t.test1('zjc')print(t.a) t.show() t.