python面向对象编程思想_Python零基础学习笔记(四十一)—— 面向对象编程思想...

面向对象三大特点:

封装、继承、多态

封装:

在python中,封装就是将有相同属性和功能的事物归纳好之后放在同一个类(class)中

优点:简化代码、便于日后修改和维护

下面定义一个人类作为例子:

里面包含了对象的初始化(构造函数),变量的访问限制(共有变量和私有变量)

class Person(object):

def __init__(self, name, age, money, height):

self.__name__ = name #特殊变量,可以直接访问

self.age = age #普通变量

self.__money = money #私有变量,不能直接访问

self._height = height #可以直接访问,但是请视为私有变量,尽量不要直接访问

def show(self):

print("My name is %s, I am %d years old. I have %d $$."%(self.__name__, self.age, self.__money))

def setMoney(self, money):

if money < 0:

pass

else:

self.__money = money

def getMoney(self):

return self.money

per = Person("Jjking", 23, 50, 60)

per.show()

per.money = 200

per.age = 24

per.show()

per.__money = 200

print(per.__money)

per.setMoney(200)

per.show()

print(per.getMoney())

#动态数据语言的体现,在执行过程中可以添加属性

per.a = 34

print(per.a)

执行结果:

继承:

子类继承父类的属性,父类有的功能和属性(私有除外),子类都可以用

下面是例子:

因为父类是Animal类,定义了eat的行为,子类是Cat类继承了Animal的eat的行为,所以在创建一个cat的对象的时候,这个对象就直接有了cat的行为,因此执行结果就是小白eat

class Animal(object):

def __init__(self, namne):

self.name = namne

def eat(self):

print(self.name + "eat")

class Cat(Animal):

def __init__(self, name):

Animal.__init__(self, name)

cat = Cat("小白")

cat.eat()

#执行结果

小白eat

多态:

用一个例子来理解一下多态,就是有继承,有函数重写,父类引用指向子类对象

#人类

class Person(object):

def __init__(self, name, gender):

self.name = name

self.gender = gender

def whoAmI(self):

return 'I am a Person, my name is %s' % self.name

#学生类

class Student(Person):

def __init__(self, name, gender, score):

super(Student, self).__init__(name, gender)

self.score = score

def whoAmI(self):

return 'I am a Student, my name is %s' % self.name

#老师类

class Teacher(Person):

def __init__(self, name, gender, course):

super(Teacher, self).__init__(name, gender)

self.course = course

def whoAmI(self):

return 'I am a Teacher, my name is %s' % self.name

def who_am_i(x):

print(x.whoAmI())

p = Person('Tim', 'Male')

s = Student('Bob', 'Male', 88)

t = Teacher('Alice', 'Female', 'English')

who_am_i(p)

who_am_i(s)

who_am_i(t)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值