美文网首页简友广场散文想法
python 面向对象程序设计、类

python 面向对象程序设计、类

作者: Cache_wood | 来源:发表于2021-10-17 21:10 被阅读0次

@[toc]

面向对象程序设计 OO

  • 一种程序设计范式
  • 程序由对象组成,每个对象包含对用户公开的
    特定功能和隐藏的实现部分
  • 对象是数据与相关行为的集合
  • 不必关心对象的具体实现,只要能满足用户的
    需求即可

  • 对象的类型,用来描述对象
  • 构造对象的模板
  • 定义了该集合中每个对象所共有的属性和方法
  • 由类构造对象的过程称之为实例化,或创建类的实例

一些重要概念

  • 多态:可以对不同类型的对象执行相同的操作
  • 封装:将数据和行为组合,并对外隐藏数据的实现方式
    对象的状态:当下实例域的值的特定组合
  • 继承:通过扩展一个类来建立另外一个类

类与类之间的关系

  • 依赖
    • 一个类的方法操纵另一个类的实例
    • 耦合度及其最小化
  • 聚合
    • 类A包含类B的实例对象
  • 继承
    • 类A由类B扩展而来
    • 如果类A扩展类B,类A不但包含从类B继承的方法,
      还会拥有一些额外的功能
  • UML

自定义类

创建类
class Student:
    def __init__(self):
        pass
  • 类的文档信息可以通过ClassName.__doc__
    查看
  • 类的定义要先执行才能生效
    • 可以在函数中或if等中进行类定义
  • 类会创建一个新的命名空间

辨析

  • 类对象
    • 类对象支持属性引用和实例化
    • 属性引用可以是类变量,也可以是类方法
  • 实例对象
    • 实例对象仅能进行属性引用(数据或方法)
    辨析
  • 类变量
    • 类变量在所有实例化的对象中是公用的
    • 类变量定义在类中且在类方法之外
    • 类变量通常不作为实例变量使用
    • 类比于Java中的静态属性
  • 实例变量
    • 每个实例独有
    • 第一次使用时自动生成
  • 与类变量重名时仍作为实例变量

类的方法

  • 对于类对象,为函数(function)
  • 对于实例对象,为方法(method)
class T:
    def f(self):
        pass
print(type(T.f)) #function
t=T()
print(type(t.f)) #method

方法定义不一定只在类中, 也可以将一个函数
对象赋值给类中的一个局部变量

def f1(self, x, y):
    return min(x, y)
class C:
    f = f1
c=C()
print(c.f(2,3))
print(type(c.f))    #是method还是function?

2
<class 'method'>

初始化方法

init()为初始化方法,在类实例化时会自动调用
• 有self参数
• 也可以有除self外的其他参数
• 只能返回None
• 较为常用

举例

class people:
    id = 0
    def __init__(self,name,number,email,tou):
        self.name = name
        self.number = number
        self.email = email
        self.tou = tou
    def speak(self):
        print('%s的电话号码是%d,电子邮箱是%s'%(self.name,self.number,self.email))
    def update(self,shuxing):
        self.shuxing = shuxing
    def show(self):
        print(people.__dict__)

test = people('jim',15378836913,'19377056@buaa.edu.cn','')
test.speak()
test.show()
test.update('170cm')
test.show()
jim的电话号码是15378836913,电子邮箱是19377056@buaa.edu.cn
{'__module__': '__main__', 'id': 0, '__init__': <function people.__init__ at 0x000002C5AFA6DEE0>, 'speak': <function people.speak at 0x000002C5AFA6DF70>, 'update': <function people.update at 0x000002C5AFA96040>, 'show': <function people.show at 0x000002C5AFA960D0>, '__dict__': <attribute '__dict__' of 'people' objects>, '__weakref__': <attribute '__weakref__' of 'people' objects>, '__doc__': None}
{'__module__': '__main__', 'id': 0, '__init__': <function people.__init__ at 0x000002C5AFA6DEE0>, 'speak': <function people.speak at 0x000002C5AFA6DF70>, 'update': <function people.update at 0x000002C5AFA96040>, 'show': <function people.show at 0x000002C5AFA960D0>, '__dict__': <attribute '__dict__' of 'people' objects>, '__weakref__': <attribute '__weakref__' of 'people' objects>, '__doc__': None}

相关文章

网友评论

    本文标题:python 面向对象程序设计、类

    本文链接:https://www.haomeiwen.com/subject/lkowoltx.html