python面向对象编程基础

python面向对象编程基础:
1、类的创建和实例化
2、继承、多态、多重继承
类的继承是一种纵向的关系,def class(BaseClass),class类继承BaseClass,拥有BaseClass的属性和方法
3、类的组合
类的组合是一种横向关系
4、内部属性
由于python语言没有public、private这样的关键字定义属性是公有还是私有的,所以如果使用普通变量命名属性就可以被外部任意调用和修改,这显然是不安全的。python采用了一种name mangling机制,在类的属性命名前加上‘__’则外部就不可访问该属性名,但是内部可以访问和调用

#coding:utf-8
'''
OOP 面向对象编程
类的创建
类的实例化
继承、多态、多重继承
组合
类的属性和方法是静态的
内部属性,不允许外部访问和修改,在属性名前加'__',这是一个name manling,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
既然内部可以访问,如果我们确实需要修改属性,则可以创建内部的修改属性方法
'''
class User:
    '''
    定义一个用户类
    '''
    def __init__(self,name,age):
        self.__name=name
        self.age=age
    def setName(self,name):
        self.__name=name
    def getName(self):
        print('我的名字是:%s' %self.__name)
    def getAge(self):
        print('我的年龄是:%d岁' %self.age)

user1=User('四明',30)
user1.getName()
user1.__name='这样子是改不了的' #改不了name属性了
user1.getName()
user1.setName('这样子就可以改了')
user1.getName()

user2=User('python',2)
user2.getName()
user2.getAge()
user2.age=20
user2.getAge()


# 继承和多态
# 多态就是说同一个方法对于不同的类可以有不同的实现
class Animal:
    def __init__(self,name,legs):
        self.__legs=legs
        self.__name=name
    def getName(self):
        return self.__name
    def printInfo(self):
        print('我是%s,我有%d条腿' %(self.__name,self.__legs))
    def shout(self):
        pass  #Animal定义了一个模版

class Cat(Animal):
    def shout(self):
        print("喵喵喵...") #重写父类的shout方法
class Dog(Animal):
    def shout(self):
        print("汪汪汪...") #重写父类的shout方法

def run(Animal):
    print('%s is running...'%Animal.getName())


# 创建Cat和Dog的实例
cat1=Cat('喵星人',4)
dog1=Dog('汪星人',5)
cat1.printInfo()
cat1.shout()
dog1.printInfo()
dog1.shout()

run(cat1)
run(dog1) #这就是一种多态,传入不同的对象会有不同的表现


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值