python---面向对象

1.类和对象

类的定义:class 进行类的定义

对象: 通过类实例化 是一个真实的事物

类的命名:通过大驼峰命名法  例:MingZi

定义类有两种方式:

旧式类: class User:

新式类:class User(object):

两种方式都是可以的,都是继承了object这个类,最好是使用新式类。

class User(object):
    def __init__(self):
        self.name="lisi"

在定义类的属性时,需要重写object中的__init__(self)方法,来初始化属性,在构建对象时就会被触发。

class User(object):
    def __init__(self):
        print("被触发!")
        self.name = "lisi"
if __name__ == '__main__':
    print("开始!")
    s = User()
    print("触发结束!")

 2.封装

封装是将方法或属性,封装到一个类或多个类中,需要用时,通过对象的调用对应的方法或是属性。

1.get和set方法

class User(object):
    def __init__(self):
        self.name = "lisi"
    def get(self):
        print(self.name)
if __name__ == '__main__':
    s = User()
    print("调用属性")
    print(s.name)
    s.get()  #调用方法

 

class User(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def get(self):
       return "name="+self.name +" "+"age="+str(self.age)+""
    def set(self,age1):
        self.age = age1

if __name__ == '__main__':
    s = User("lisi",20)
    print("调用属性")
    print(s.name,s.age)
    s.age = 19
    print(s.get())

 

 2.porperty()

porperty()方法,如果有参数则调用带有参数的带有参数的方法进行赋值,否则,则调用另一方法。

class User(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def get(self):
       return "name="+self.name +" "+"age="+str(self.age)+""
    def set(self,age1):
        self.age = age1
    show = property(get,set)
if __name__ == '__main__':
    s = User("lisi",20)
    print("调用属性")
    print(s.show)
    s.show = 99
    print(s.show)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 3.通过装饰器@property在get方法上进行装饰

class User(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    @property
    def Username(self):
       return "name="+self.name +" "+"age="+str(self.age)+""
    @Username.setter
    def Username(self,age1):
        self.age = age1
    # show = property(get,set)
if __name__ == '__main__':
    s = User("lisi",20)
    print("调用属性")
    print(s.Username)
    s.Username=199
    print(s.Username)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3.继承

类与类之间存在一种继承关系

class UserName(object):
    def __init__(self):
        self.name = "马云"
        self.money = 10000
class son(UserName):
    pass
if __name__ == '__main__':
    s = son()
    print(s.name)
    print(s.money)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

 注意:子类并不能继承父类的所有方法和属性,只能继承父类公开的方法和属性。私有的方法和属性是不能继承的  (私有:在属性或方法命前打 __两个下划线)

class UserName(object):
    def __init__(self):
        self.__name = "马云" #将父类名字定义为私有
        self.money = 10000
class son(UserName):
    pass
if __name__ == '__main__':
    s = son()
    print(s.name)
    print(s.money)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  子类无法访问

继承是可以实现方法的重写的 :重写方法的时候,方法的名称、参数一定要和父类必须一致

class UserName(object):
    def __init__(self):
        self.__name = "马云" #将父类名字定义为私有
        self.money = 10000
    def show(self):
        print("我很有钱!!")
class son(UserName):
    def show(self):
        print("我也很有钱!!")
if __name__ == '__main__':
    s = son()
    s.show()
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

重载:函数名称相同,但是函数的参数个数或者类型不同 ,在python中是没有方法的重载,有方法的重写。

python中支持多继承,如果有一个A类分别继承了B类和C类,B和C中都有一个D()方法,那么A会继承那个?

按照继承的顺需来找,先继承那个类就先继承那个类中的方法。

​​​​​3.1super() 始终指向父类

class UserName(object):
    def __init__(self):
        self.__name = "马云" #将父类名字定义为私有
        self.money = 10000
    def show(self):
        print("我很有钱!!")
class son(UserName):
    def show(self):
        print("我也很有钱!!")
        super().show()
if __name__ == '__main__':
    s = son()
    s.show()

  

4.多态

多态(python中不重要):指的是对象的多种状态,多态是基于继承的基础之上,父类引用指向子 类实例的现象叫做多态

注意:在弱数据类型语言中,因为不用声明数据类型,所以天生就支持多态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值