Python新学习第十章——面向对象程序设计(第一部分)

面向对象的基本特征

1:封装
2:继承
3:多态

类的定义和使用

定义类

使用class关键字来实现

class ClassName:
"""类的帮助信息"""		
statement				#类体

举个实例

class Geese:
	"""大雁类"""		
	pass 			#如果不知道写什么东西,就可以先pass

创建类的实例

就用上面的那个实例来举例

wildGeese = Geese()		#创建大雁类的实例
print(wildGeese)	

创建__init__()方法

创建类后,往常会再创建一个__init__()方法,这是一个特殊的方法,类似与Java中的构造方法.即每创建一个新实例,他会自动执行.init()方法中必须包含一个self参数,而且必须是第一个参数.self参数是一个指向实例本身的引用,用于访问类中的属性和方法,在方法被调用时会自动传递实际参数self.因此,在__init__()方法中只有一个参数的情况下,当创建类的实例时,就无需指定实际参数.
简单来说,这个方法在你创建实例的时候就会被自动执行,self就像一个路标,通往则这个方法,所以在使用这个类时,不用给他赋值,再有别的属性的的话就要赋值了
还是老样子,举例

class Geese:
    """大雁类"""
    def __init__(self):		#__init__()方法
        print("我是大雁类")  #方法中的内容

wildGeese = Geese()			#创造实例时直接调用方法

这个太简单了,我们再来加点元素

class Geese:
    """大雁类"""
    def __init__(self,beak,wing,claw):
        print("我是大雁类")
        print(beak)
        print(wing)
        print(claw)

beak_1 = "鸟喙长"
wing_1 = "翅膀也不短"
claw_1 = "爪子是蹼状"
wildGeese = Geese(beak_1,wing_1,claw_1)    #self方法中不能缺元素

结果是

我是大雁类
鸟喙长
翅膀也不短
爪子是蹼状

但是一旦缺少元素,那么就会报错,如下

TypeError: __init__() missing 1 required positional argument: 'claw'

创建类的成员并访问

创建实例方法并访问

继续刚才那个例子

class Geese:
    """大雁类"""
    def __init__(self,beak,wing,claw):
        print("我是大雁类")
        print(beak)
        print(wing)
        print(claw)
    def fly(self,state):
        print(state)
beak_1 = "鸟喙长"
wing_1 = "翅膀也不短"
claw_1 = "爪子是蹼状"
wildGeese = Geese(beak_1,wing_1,claw_1)
wildGeese.fly("100km")

从这里我们可以看出,init()方法是自动调用,但是要是你想要调用其他的方法就要使用 实例.方法名()了

创建数据成员并且访问他们

类属性

就是定义在类里面的变量,也就是属性,直接举个例子看一下

class Geese:
    """大雁类"""
    neck = "脖子较长"
    wing = "振翅频率较高"
    leg = "腿位于身体的中心支点"
    def __init__(self):
        print("我属于雁类,我有以下特征:")
        print(Geese.neck)
        print(Geese.wing)
        print(Geese.leg)

wildGeese = Geese()

结果

我属于雁类,我有以下特征:
脖子较长
振翅频率较高
腿位于身体的中心支点

我们可以看出,这个之间定义在类里面的"全局变量",在使用时的形式为
类名.属性名

实例属性

还要注意实例属性只能通过实例名访问
如果使用类名访问,会出异常
举例:

class Geese:
    """
    雁类
    """
    def __init__(self):
        self.neck = "脖子长"
        print(self.neck)

wildgeese = Geese()
print(Geese.neck)

就比如在上述代码后使用print(Geese.neck)

 print(Geese.neck)
AttributeError: type object 'Geese' has no attribute 'neck'

但是可以修改,在你创建实例过后,你可以通过实例来修改它

class Geese:
    """
    雁类
    """
    def __init__(self):
        self.neck = "脖子长"
        print(self.neck)

wildgeese1 = Geese()
wildgeese2 = Geese()
wildgeese2.neck = "一般般吧"
print(wildgeese2.neck)

结果:

脖子长
脖子长
一般般吧

所以说要注意这个点

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值