Python类的基础--设计、使用( 二 )


【Python类的基础--设计、使用】类名.类变量cls.类变量从print_variety函数可以看出 , 在类的内部可以通过类调用类的方法函数 。
类名.类方法4).用@staticmethod修饰的print_ci函数是静态函数 , 它的第一个参数不是特殊的self或者cls , 静态函数可在类内部或类的外部调用 , 也可被类的对象调用 。
创建对象面向对象编程实际是在设计好类以后 , 用与类同名的函数来创建类的对象 , 用类的对象调用对象的方法函数来编写整个程序 , 有时可能根据需要少量地用类调用类方法的语句代码出现 , 一般都是对象调用类里设计好的对象方法函数来完成整个程序的功能 , 故称面向对象编程 。
创建类的实例对象的语法:
变量 = 类名([参数序列])通过这样的方式创建类的实例对象本质是调用了类里的_ _ init_ ()方法函数 , 括号里的[参数序列]意思是看 _ init_ _()方法函数是否有除self外的其他形参 , 如无 , 换括号里没有任何实参 。
需要特别说明的是任何实例对象的self形参不用赋值 , 在Python解译执行程序语句时self代表点儿运算符(.)前的实例对象 , 或者说self被Python赋值为点儿运算符前的实例对象 。
a = Horse(sex = "male")b = Horse(name = "marong", sex = "female")面向对象编程示例面向对象编程 , 需要两步 , 第一步先设计好类 , 第二步基于类创建对象并通过对象调用函数来完成整个程序需要实现的功能 。 下面是本节课设计的一个Horse类的面向对象程序设计的完整示例 。
# coding:utf-8class Horse(object):variety = "大宛马"def __init__(self, name = "green", height = 0.5, length = 1.3, sex = "male"):# self.name是成员变量 , name是形参、局部变量self.name = nameself.height = heightself.length = lengthself.sex = sexprint "A baby horse is born called", self.namedef print_info(self):print self.name, self.height, self.length, self.sex, Horse.variety#,Horse.addressHorse.print_variety() # 在对象方法里通过类调用类方法 , 避免Horse().print_ci(200, 100)# 对象调用静态方法Horse.print_ci(200, 100) # 类调用静态方法@staticmethoddef print_ci(x, y):print x, y@classmethoddef pp(cls):# 类使用类变量print cls.variety, Horse.variety, cls.address#cls.print_variety()print Horse().name# 对象使用对象的成员变量@classmethoddef print_variety(cls):cls.address = "xi'an"print "type", type(cls.address)print cls.variety, Horse.variety, cls.addressHorse.pp()# 类调用类方法Horse().print_ci(100, 100)# 对象调用静态方法a = Horse("xiaoxuanfeng")b = Horse("pilihuo", sex = "female")a.print_info()b.print_info()Horse.print_variety()print "*" * 20Horse.pp() # 类调用类方法Horse.print_ci(12, 23)# 类外类调用静态方法a.print_ci(23, 31) # 类外对象调用静态方法