GoodZhang在学Python(十)--类和对象
来源:互联网 发布:win32系统编程 pdf 编辑:程序博客网 时间:2024/06/08 10:50
python是面向对象的,好,接下来,就写一下学习类和对象的东西
基本类
首先,来看一个最基本的person类吧
__author__ = 'zWX231671'class Person: # pass表示空白语句块 passp = Person()print(p)
方法
有类就要有方法,也是通过下面的例子来了解一下:__author__ = 'zWX231671'class Person: name = 'tom' def hi(self): # self引用自身的对象 # self类似 C++中的self指针和java、C#中的this参考 print('hi %s' % self.name)p = Person()p.hi()结果为:
hi tom
__init__方法
在java语言中类都会有构造方法,在python中也是有类似的方法 __init__ (注意是两个下划线)
__author__ = 'zWX231671'class Person: # 无需为self赋值 def __init__(self, name, age): self.name = name self.age = age def hi(self): print('%s is a good boy, %d years old' % (self.name, self.age))p = Person('tom', 13)p.hi()结果为:
tom is a good boy, 13 years old
类的变量和对象的变量
类的变量,由一个类的所有对象所共同拥有,在内存中只有一份拷贝,在一个对象中改变其值,会立即反映到其他对象中
对象的变量,由类的每个对象所拥有,每个对象都拥有这个变量的一份拷贝,他们在不同对象中虽然名字相同,但是内在的没有半毛钱关系
例子:
__author__ = 'zWX231671'class Person: age = 0 def __init__(self, name): Person.age += 1 self.name = name print('excute __init__:my name is %s, %d years old' % (self.name, self.age)) # 在对象销毁(不再使用)时调用 __del__方法 def __del__(self): Person.age -= 1 print('excute __del__:my name is %s, %d years old' % (self.name, self.age)) def hi(self): print('my name is %s, %d years old' % (self.name, self.age))tom = Person('tom')tom.hi()cat = Person('cat')cat.hi()jerry = Person('jerry')jerry.hi()del tom
结果为:
excute __init__:my name is tom, 1 years oldmy name is tom, 1 years oldexcute __init__:my name is cat, 2 years oldmy name is cat, 2 years oldexcute __init__:my name is jerry, 3 years oldmy name is jerry, 3 years oldexcute __del__:my name is tom, 2 years oldexcute __del__:my name is jerry, 1 years oldexcute __del__:my name is cat, 0 years old
继承
应该对继承的思想都有理解了,这里就不多说,举个例子,再简单分析一下:
__author__ = 'zWX231671'class Animal: def __init__(self, legNum, wingNum): self.legNum = legNum self.wingNum = wingNum def say(self): print('I have %d legs and %d wings' % (self.legNum, self.wingNum))class Dog(Animal): def __init__(self, legNum, wingNum, sound): Animal.__init__(self, legNum, wingNum) self.sound = sound def say(self): Animal.say(self) print('I am a dog,my sound is %s' % self.sound) def run(self): print('I am a dog,I can run with my legs')class Brid(Animal): def __init__(self, legNum, wingNum, sound): Animal.__init__(self, legNum, wingNum) self.sound = sound def say(self): Animal.say(self) print('I am a brid,my sound is %s' % self.sound) def fly(self): print('I am a brid,I can fly with my wings')dog = Dog(4, 0, '汪汪')brid = Brid(2, 2, '叽叽喳喳')dog.say()dog.run()brid.say()brid.fly()结果:
I have 4 legs and 0 wingsI am a dog,my sound is 汪汪I am a dog,I can run with my legsI have 2 legs and 2 wingsI am a brid,my sound is 叽叽喳喳I am a brid,I can fly with my wingsAnimal、Dog、Brid三个类,Dog与Brid继承自Animal父类,继承并覆盖了say()方法,同时Dog有自己的run()方法,Brid加了自己的fly()方法
0 0
- GoodZhang在学Python(十)--类和对象
- GoodZhang在学Python(九)--序列和参考
- GoodZhang在学Python(一)--初探Python
- GoodZhang在学Python(六)--字符串格式化
- GoodZhang在学Python(八)--基本数据结构
- GoodZhang在学Python(二)--Python环境安装配置&HelloWorld
- GoodZhang在学Python(四)--Python中的函数
- GoodZhang在学Python(七)--代码重用之模块
- GoodZhang在学Python(十一)--下一步应该学啥
- GoodZhang在学Python(十二)--简单客户端、服务端socket通信
- GoodZhang在学Python(五)--Python中的文档字符串(docStrings)
- GoodZhang在学Python(三)--控制流if while for break continue
- GoodZhang在学Python(十三)--Python3数据get与post提交
- GoodZhang在学Python(十四)--Python3中urllib库常用操作
- 在学python(要点整理)
- 转:你们以为我在学C++?其实我在学 Python(pezy)
- 我在学python
- 小学生都在学Python
- 转 ofbiz的webservice接口提供(1)-WSDL的生成
- C#中的委托与事件
- 在VS中计算代码度量值
- 创业者的心声:小城市互联网创业的困局
- 如何将应用安装到/system/app下
- GoodZhang在学Python(十)--类和对象
- POJ1844 Sum
- 新装Oracle 11g忘记密码
- android如何实现开机自动启动Service或app(转)
- APK root权限静默安装、卸载
- The python challenge 01————首次用字符串和for循环
- SRM 630 DIV2
- Android高手应该精通哪些内容?
- JDK内置工具使用