python面对对象
主要的概念有:
类:
属性:就是变量,属性是在__init__的方法里,以参数的形式定义
方法:函数,行为
class Student(object);##类
##这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性
__slots__(‘name’,'age','height')
def __init___(self,name,age,height) ##属性
self.name=name
self.age=age
self.height=height
def run(self) ##方法
print("paobu")
s1=Student("小明",23,150) ##对象
s1.run()
或者
class Student:
pass
s1=Student("小明",23,150)创建一个类的过程
1、__new__方法用来申请一段内存空间;
2、调用__init__方法传入参数,并让self指向申请好的内存空间
3、s1变量也指向创建好的内存空间
魔术方法
特点:1、以__开始,以__结束
2、不需要自己调用,会在合适的时间自己调用
3、方法名系统已经定义好了,会在合适的时间进行调用
举例
__init__:创建对象时会自动调用
__del__:对象被销毁的时候自动建立
当打印一个对象的时候,会默认返回对象类型和内存地址。
__str__或者__repr__:当打印的时候会自动掉这两个方法,如果二者都选,则__str__优先
__dirct__:把对象的属性转换成字典
__doc__:类的说明""" """
__module__:默认打印的是___main__
__set_item__:调用[]的时候会自动调用
对象():s1()是调用__call__方法
==:会调用__eq__方法
args:是一个元组
**kwargs:是一个字典
dir把对象的所有属性及方法都列出来
类属性:模板的属性,定义在类里,但是在函数之外
对象属性:实例的属性
私有属性:以两个__线开始self.__money=1000,私有变量的获取方式1、 对象._类名__money 2、在类的定义的函数中,用self.__money
@staticmethod:当一个类中的函数没有用到self,则可以通过这个定义为静态类,此时()中就不用写入self
封装:函数是对语句的封装,类是对函数和变量的封装
继承:类和类之间可以手动的建立父子关系,父类的属性和方法,子类均可使用,父类又称为基类,子类又称为派生类,python中允许多继承。当同子类和父类的方法差别较大时,子类可以重写方法,子类优先。子类在父类的基础上可以有更多的属性,调用方法为super(person 类名,self).__init(age,name)
calss Animal(object):
pass
class Student(Animal):
pass #这样Student就继承了Animal.
多态:多态是一种技巧,提高代码的灵活性
print("args={},kwargs={}".format(args,kwargs))
is:获取两个对象的内存地址
isinstant:用来判断一个对象是否由指定的类或父类例化出来