[代码笔记] python之 类和对象(Just syntax)

来源:互联网 发布:淘宝网第三方支付平台 编辑:程序博客网 时间:2024/05/01 09:30

最基础的一个类:

具有类变量,类方法,构造方法,类私有变量

#!/usr/bin/python3#文件名: demo_class.pyclass Person:    #定义类变量,私有变量(加__)    name='Guddqs'    age=0    __height=167    #定义构造方法    def __init__(self,name,age,height):        self.name= name        self.age=age        self.height=height    #定义其他方法    def sayHello(self):        print('%s 说: 我 %d 岁,并且高达 %d cm'%(self.name,self.age,self.height))#开始测试m = Person('Guddqs',19,277)m.sayHello()#看起来和java挺像的

输出如下:

Guddqs 说: 我 19 岁,并且高达 277 cm


继承与多态

先来一个最简单的继承

#!/usr/bin/python3#文件名: demo_class_extend.pyclass Pet:    nickName='Empty'    sex='Not Definited'    def __init__(self):        print('宠物名称是 %s ,宠物性别是%s'%(self.nickName,self.sex))class Penguin(Pet):    #Nothing Definited    passp=Penguin()

打印如下:

宠物名称是 Empty ,宠物性别是Not Definited


加强版

#!/usr/bin/python3#文件名: demo_class_extend.py#经过测试,python3 不支持函数重载,支持重写class Pet:    nickName='Empty'    sex='Not Definited'    def __init__(self,name,sex):        self.nickName=name        self.sex=sex    def hello(self):        print('宠物名称是 %s ,宠物性别是%s'%(self.nickName,self.sex))    def hello(self):        print('宠物名称是 %s ,宠物性别是%s'%(self.nickName,self.sex))#带__的都是私有的,私有变量,私有方法如下(方法必须带有self参数,且为第一个):class Penguin(Pet):    #Nothing Definited    __weight=0    def __sleep(self):        pass    def hello(self):        print('这是重载后的hello方法!')p=Penguin('贝贝','母')p.hello()#访问重写后的方法print(p.__weight)#访问私有成员,出现未找到错误!

打印如下:

这是重载后的hello方法!
Traceback (most recent call last):
File “C:/aguggqs/apython/demo_class_extend.py”, line 34, in
print(p.__weight)#访问私有成员,出现未找到错误!
AttributeError: ‘Penguin’ object has no attribute ‘__weight’

最后说下python中的特殊方法重载

#!/usr/bin/python3#文件名:  demo_class_overload.py#python 的专有方法重载,实现算数重载class Result:    #定义语文成绩和数学成绩     china=100    math=200    #print(china) #在这里直接写程序语句,居然可以运行    #重载类的专有方法(加,减,乘,除)    """    __init__ : 构造函数,在生成对象时调用    __del__ : 析构函数,释放对象时使用    __repr__ : 打印,转换    __setitem__ : 按照索引赋值    __getitem__: 按照索引获取值    __len__: 获得长度    __cmp__: 比较运算    __call__: 函数调用    __add__: 加运算    __sub__: 减运算    __mul__: 乘运算    __div__: 除运算    __mod__: 求余运算    """    def __init__(self,china,math):        self.china=china        self.math=math    #定义算数方法,省略其他    def __add__(self,other):        return Result(self.china+other.china,self.math+other.math)    def __str__(self):        return repr('Result {china: %d ,math: %d}'%(self.china,self.math))#开始测试xm=Result(100,20)xh=Result(80,90)print(xm+xh)

输出如下:

‘Result {china: 180 ,math: 110}’

0 0
原创粉丝点击