Python 中的类和对象

面向对象程序设计(Object-Oriented Programming)是关于如何使用对象创建程序的编程模式。一个对象有独特的特性、状态和行为

  • 对象的特性就像人的身份证号码,Python 会在创建每一个对象时自动对每个对象赋予一个独特的 id 辨识这个对象
  • 对象的状态用变量表示,也称为对象的数据域
  • 对象的行为在 Python 中用方法来定义

类的定义

  • Python 为类提供了一种特殊的方法:__init__(),即初始化程序,它在创建和初始化新对象时被调用,例如以下的 Circle 类定义表明每个 Circle 对象被声明时都会被初始化 radius:
        import math
    
        Class Circle:
            # Construct a circle object
            def __init__(self, radius = 1):
                self.radius = radius
    
            def getPerimeter(self):
                return 2 * self.radius * math.pi
    
            def getArea(self):
                return self.radius * self.radius * math.pi
    
            def setRadius(self, radius):
                self.radius = radius
    

构造对象

根据上述定义,当想要创造一个 Circle 对象时,可以指定 radius 参数,也可以使用默认值:

    # 指定 radius 参数
    c1 = Circle(100)
    # 使用默认值
    c2 = Circle()

不变对象和可变对象

  • Python 中调用函数时传给被调用函数的参数是原始参数的引用
  • 如果我们使用了 Python 自带的数据类型如整数类型、浮点数类型、字符串等数据作为被传参数,则无论被调用函数怎么改变参数的值,都不会影响原始对象的值,这就是不可变对象
  • 相反,由用户自定义的类所产生的对象原始值是可以被函数改变的,这就叫可变对象

隐藏数据域

  • 为了避免用户随意修改对象的关键数据,我们有必要对某些数据封装成私有类型,只允许对象的方法对其进行安全的操作
  • 定义一个私有数据的语法是:用两个下划线开头为数据进行命名
  • 注意:私有数据不能用一个以上的下划线结尾
        import math
    
        Class Circle:
            # Construct a circle object
            def __init__(self, radius = 1):
                self.__radius = radius
    
            def getPerimeter(self):
                return 2 * self.__radius * math.pi
    
            def getArea(self):
                return self.__radius * self.__radius * math.pi
    
            def setRadius(self, radius):
                self.__radius = radius
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值