7.4. 一个基础有方法和属性的类

7.4.1. 类成员

类的成员可以分为三大类:字段、方法和属性 image1

  • 字段

字段包括:

普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,

#!/usr/bin/env python
#-*- coding:utf8 -*-
class Province:

    #静态字段
    country = "中国"

    def __init__(self,name):
        #普通字段
        self.name = name


#直接访问普通字段
hu = Province("hujianli")
print(hu.name)

#直接访问静态字段
print(Province.country)

image2 * 静态字段在内存中只保存一份 * 普通字段在每个对象中都要保存一份

7.4.2. 方法和属性

代码示例 1

#!/usr/bin/env python
#-*- coding:utf8 -*-
class Geese:
    '''
    大雁类
    '''
    neck = '脖子较长'   #类属性
    wing = '翅膀频率高'
    leg = '腿位于身体的中心支点,行走自如'

    def __init__(self):  #定义构造方法
        print('我是大雁类,我有以下特征:')
        print(Geese.neck)
        print(Geese.wing)
        print(Geese.leg)

    def fly(self, state):        #飞行方法
        print(state)

beak_1 = "喙的基部较高,长度和头的长度几乎相等"
wing_1 = "翅膀长而尖"
claw_1 = "爪子是噗状的"
# windGoose = Geese(beak_1, wing_1, claw_1)
# print()
# windGoose.fly("我飞行的时候,一会排成人字,一会排成一字")
print()
print("我的形态特征是:")
windGoose = Geese()

代码示例 2

#!/usr/bin/env python
#-*- coding:utf8 -*-

class Geese:
    '''
    大雁类
    '''
    neck = '脖子较长'   #类属性
    wing = '翅膀频率高'
    leg = '腿位于身体的中心支点,行走自如'
    number = 0

    def __init__(self):  #定义构造方法
        Geese.number +=1
        print('\n我是第{}只大雁类,我有以下特征:'.format(Geese.number))
        print(Geese.neck)
        print(Geese.wing)
        print(Geese.leg)

    def fly(self, state):        #飞行方法
        print(state)


list1 = []
for i in range(4):
    list1.append(Geese())

print("一共有{}只大雁!".format(Geese.number)) #输出大雁的只数
Geese.beak = "这是添加的一个属性,属性名称beak."
print(list1[1].beak)