编程语言
首页 > 编程语言> > Python3 类与对象

Python3 类与对象

作者:互联网

目录

面向对象基础

面向过程编程

面向过程的核心是'过程'二字, 过程指的是做事情的步骤, 既先做什么再做什么

基于该编程思想编写程序, 就好比一条工厂流水线, 一种机械式的思维方式

面向对象编程

面向对象的核心是'对象'二字, 对象指的是特征和技能的结合体

基于该编程思想编写程序, 就好比在创造世界, 一种上帝式的思维方式

什么是类

从上面我们知道对象是特征和技能的结合体, 而类是一系列对象相同的特征和技能的结合体

在程序中, 先定义类, 再调用类来生成对象

如何定义类

class 类名:
    # 对象相同的特征
    Kind = 'human'
    # 对象相同的技能
    def eat(self):
        pass    

    
'''
class: 用来定义类的, class后跟的是类名
类名: 类的名字, 用来调用创造对象的
注意: 类名必须遵循驼峰命名法
'''

注意: 类在定义阶段就已经产生好了名称空间, 执行Python文件时执行类内部的代码

class Human:
    print('from class Human')
    kind = 'human'
    def eat(self):
        pass
 
# 运行上述代码结果为: from class Human
# 因此类在定义阶段会执行类中的代码

类的基本操作

class Programmer:
    # 特征
    language = 'Python'
    # 技能
    def programming(self):
        print('programming...')
        
# 查看类的名称空间内所有名字
print(Programmer.__dict__)

# '__module__': '__main__', 'language': 'Python', 'programming': <function programmer.programming at 0x00000000029C7620>, '__dict__': <attribute '__dict__' of 'programmer' objects>, '__weakref__': <attribute '__weakref__' of 'programmer' objects>, '__doc__': None}


# 查
print(Programmer.__dict__.get('language'))  # Python
print(Programmer.language)  # Python

# 改
Programmer.language = 'Java'
print((Programmer.language)  # Java
     
# 增
Programmer.girlfriend = 'hands'
print(Programmer.girlfriend)  # hands

# 删
del Programmer.girlfriend
print(Programmer.girlfriend)  # type object 'Programmer' has no attribute 'girlfriend'

对象

实例化对象

实例化对象就是调用类来生成对象

class Programmer:
   # 特征
   language = 'Python'
   # 技能
   def programming(self):
       print('programming...')
       
pgmmer1 = Programmer()
pgmmer2 = Programmer()
pgmmer3 = Programmer()

print(pgmmer1.language)  # Pyhton

pgmmer1.programming()  # programming...

对象添加特有属性

问题: 我们通过实例化生成的对象特征和技能全都一样

解决: 在类的内部定义__init__函数, __init__函数可以为对象初始化某些属性, 在类被调用时, 自动触发该函数

class Programmer:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
  
    language = 'Python'
    
    def programming(self):
        print('programming...')
        
        
 # 我们再__init__函数里设置了三个参数, 因此我们在调用类时就必须传入三个参数       
pgmmer1 = Programmer('A', '10', 'male')
pgmmer2 = Programmer('B', '20', 'male')
pgmmer3 = Programmer('C', '30', 'male')


print(pgmmer1.name)  # A
print(pgmmer2.name)  # B

对象与类的查找顺序

class Programmer:
    def __init__(self,language):
        self.language = language

    language = 'Python'
    
    def programming(self):
        print('programming...')
        
        
pgmmer = Programmer('Java')

print(pgmmer.language)  # Java

对象的绑定方法

class Programmer:
    # 特征
    language = 'Python'
    # 技能
    def programming(self):
        print('programming...')
        
pgmmer = Programmer()

# 由类来调用时, 需要传一个参数给self
Programmer.programming(1)  # programming...

# 由对象调用绑定方法时, 默认把对象本身传入该方法, 因此不用再传入多余的参数
pgmmer.programming()   # programming...     

标签:__,language,对象,programming,print,Programmer,Python3
来源: https://www.cnblogs.com/bigb/p/11642760.html