Python3 面向对象编程

本文详细介绍了Python3中的面向对象编程,包括类的定义、数据封装、访问限制、获取对象信息以及实例属性和类属性的概念与用法。通过示例展示了如何创建类、定义方法以及如何处理实例和类属性。
摘要由CSDN通过智能技术生成

Python3 面向对象编程

  • 定义类通过class关键字:
class Student(object):
    pass
  • class关键字后是类名,类名通常以大写字母开头
  • 之后是(object),表示该类从哪个类继承下来。如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类
  • __init__方法,在创建实例的时候可以把必须绑定的属性填写进去。
class Student(object)
    def __init__(self,name,score):
    self.name=name
    self.score=score
  • __init__方法后的第一个参数永远是self,表示创建的实例本身。在__init__内部,可以把各种属性绑定到self,因为self指向创建的实例本身。

数据封装

class Student(object):
    def __init__(self,name,score):
    self.name=name
    self.score=score

    def print_score(self):
        print('%s:%s' %(self.name,self.score))
  • 定义一个方法,除了第一个参数是self之外,其他与普通函数一样。
  • 调用一个方法,只需要在实例变量上直接调用,除了self不用传递,其他参数需要正常传递

访问限制

  • 如果要让内部属性不被外部访问,可以加__变成私有变量,只有内部可以访问,外部不能访问。
class Student(object):
    def __init__(self,name,score):
    self.__name=name
    self.__score=score

    def print_score(score):
        print('%s:%s' %(self.__name,self.__score))

获取对象信息

  • 使用type()判断对象类型
  • 使用types模块中定义的常量判断是否是函数
import types
def fn():
    pass

type(fn)==types.FunctionType
  • 判断class的类型,使用isinstance()函数
  • 获得一个对象所有的属性和方法,使用dir(),返回一个包含字符串的list。
    *类似__xxx__的属性和方法在Python中有特殊用途。如__len__方法返回长度。调用len()函数获取一个对象的长度,实际在len()内部会自动调用该对象的__len__()方法。以下等价
>>>len('ABC')
3
>>>'ABC'.__len__()
3
  • getattr()setattr()hasattr(),可以操作一个对象的状态。
clas MyObject(object):
    def __init__(self):
        self.x=9
    def power(self):
        return self.x * self.x

obj=MyObject()

>>>hasattr(obj,'x')
True
>>>obj.x
9
>>>hasattr(obj,'y')
Flase
>>>setattr(obj,'y',19)
>>>hasattr(obj,'y')
True
>>>getattr(obj,'y')
19
>>>obj.y
19

实例属性和类属性

  • Python是动态语言,根据类创建的实例可以任意绑定属性
    给实例绑定属性的方法:通过实例变量,或self变量
class Student(object):
        def __init__(self,name):

s=Student('Bob')
s.score=90
  • 若类本身需要绑定一个属性,可以直接在类中定义属性,即类属性。
    类属性虽然归类所有,但类的所有实例都可以访问。
class Student(object):
    name='Student'
  • 不要把实例属性和类属性使用相同的名字,相同名称的实例属性将屏蔽掉类属性。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值