GoodZhang在学Python(十)--类和对象

python是面向对象的,好,接下来,就写一下学习类和对象的东西

基本类

首先,来看一个最基本的person类吧

__author__ = 'zWX231671'
class Person:
    # pass表示空白语句块
    pass
p = 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 old
my name is tom, 1 years old
excute __init__:my name is cat, 2 years old
my name is cat, 2 years old
excute __init__:my name is jerry, 3 years old
my name is jerry, 3 years old
excute __del__:my name is tom, 2 years old
excute __del__:my name is jerry, 1 years old
excute __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 wings
I am a dog,my sound is 汪汪
I am a dog,I can run with my legs
I have 2 legs and 2 wings
I am a brid,my sound is 叽叽喳喳
I am a brid,I can fly with my wings
Animal、Dog、Brid三个类,Dog与Brid继承自Animal父类,继承并覆盖了say()方法,同时Dog有自己的run()方法,Brid加了自己的fly()方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值