Python基础知识09

    面向对象编程:opp
    
    	类:用来描述具有相同属性和方法的对象的集合,定义了该集合中每个对象所共有的方法和属性,对象就是类的实例
    	
    	方法:类中定义的函数
    	
    	类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且周期函数体之外,类变量通常不作为实例变量使用
    	
    	方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
    	
    	局部变量:定义在方法中的变量,只作用于当前实例的类。
    	
    	实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的
    	
    	self: 代表的是类的实例,代表当前对象的首地址,如果对象没有引用了首地址 它称为垃圾对象 垃圾对象会被垃圾回收机制 自动回收
    
    魔法方法 :
    	__init__()魔法方法 在其他语言中称为构造方法(构造器)
    	魔法方法__init__()在实例化对象时会自动调用
    	一个类如果没有显示定义__init__()魔法方法 那么系统会为该类提供一个默认的无参数的__init__()方法
    	一个类如果显示定义了魔法方法__init__()name会把系统提供的默认无参数的__init__()方法覆盖
    
    	魔法方法在实例化对象时会自动调用
    	魔法方法在实例化对象的同时 可以初始化变量
    方法重载:
    	overload overloading	
    	在同一个类,有多个方法时 方法名相同 参数列表不同 就是方法重载
    	python不支持方法重载
    
    传递:
    	可变类型:dict list object
    	不可变类型:int float str tuple bool None
    	对象也是可变类型
    
    	对象作为参数进行传递是值传递还是引用传递?
    		python语言中,对象作为参数进行传递 是值传递和引用的综合使用
    		形式参数如果接收的数据类型是不可变类型 就是值传递
    		形式参数如果接受的数据类型的是可变类型 就是引用传递
    
    封装:
    	就是把属性和行为私有化 达到封装的目的
    	
    	属性的访问级别:
    		1,私有的
    		2,公开的
    
    	私有属性:就是在属性之前添加__
    
    	私有属性和行为只能在本类中直接使用
    	
    	属性一旦私有化就应该对外界提供功能的setter和getter方法以便于外界对属性的设置和获取
    
    
    	setter函数的书写:
    	1.使用def关键字
    	2.函数名 set+你设置的属性
    	3.set函数都有参数 参数就是你设置的属性名
    
    	getter函数的书写:
    	1.使用def关键字
    	2.函数名 get+你获取的属性
    	3.get函数没有参数
    
    	函数的封装:
    	函数一旦封装 只能在本类内部使用 外界无法访问
    	所以一般情况下 函数很少封装
    
    	限制类中 可以出现的属性
    	__slots__=["__name","sex","say"];
    
    继承:
    	同类事物具有共性 又有特性
    	根据抽象原则,抽取同类事物的共性 舍去特性 就形成了同类事物的父类
    
    	子类只需要关注自己特有的属性和行为
    
    	新类可以从现有的类 向外派生这样的过程叫做继承
    	新类被称为子类
    	现有的类被称为父类
    
    	在python3中所有的类 都直接或者间接继承object类
    	object类是所有类的超类(基类)
    
    继承的语法:    (同时有继承多个父类时,哪个父类名在前为准)
    
    	class 子类名(父类名,父类名,...父类n):
    
    	在python语言中 一个子类可以继承多个父类
    	一个类父类也可以有多个子类
    	继承是有传递性的
    	子类继承父类 非私有的属性和行为
    	子类继承父类私有属性的setter和geetter方法
    	子类无法继承父类的魔法方法. __init__()
    
    	子类除了从父类继承的属性和行为外
    	还可以扩展自己特有的属性和行为 这称为子类扩展
 

关于类的继承中父类和子类的查看:
直接父类的查看可以使用:
类名.bases
所有父类的查看可以使用:
类名.mro

方法重写:
	子类从父类继承的某个实例方法 不满足子类的需求时
	可以对父类方法 进行重新实现这称为方法重写 方法覆盖 方法覆写 override overriding

	子类中定义了和父类一样的方法(继承到)


	不同的对象调用同一个方法 展现不同的效果(为后期多态打下前提)
	子类从父类继承的方法,如果子类重写 调用的就是重写的方法、
	如果子类没有重写 调用的父类的方法

super()函数	;
	
	指向父类对象
	
	在子类中可以使用super().函数名 调用父类的函数


	如果父类的类变量 被子类同名的类变量隐藏时
	可以使用super().变量 | 父类名.变量名 |对象名 调用被隐藏的父类类变量

多态:
	多态:
		故名思意就是多种形态

	多态产生的前提:
		1.继承
		2.函数重写
		3.向上转型


"""
class Animal:
	def eat(self):
		print("动物就喜欢吃");


class Dog(Animal):
	def eat(self):
		print("狗喜欢吃排骨");

class Cat(Animal):
	def eat(self):
		print("猫喜欢吃鱼");

a=Animal();
a.eat();
a=Dog();
a.eat();
a=Cat();
a.eat();

实例成员和类成员:
	""
	实例变量:
	self.变量名声明的
	实例变量只能使用对象名调用

	类变量:
		在函数之外,直接在类体中 声明的变量

	类变量可以使用对象名调用 也可以使用类名调用

	每个对象都会有自己独特的实例变量
	类变量会被所有的对象共享

	实例方法:
		在声明方法时 有self参数

	静态方法:和以前的普通的方法是一样的 但是需要添加一个装饰器(@staticmethod)

	类方法:
		需要一个装饰器(@classmethod) 类方法需要传一个参数cls(class的简写)

	类方法,实例方法,静态方法都可以使用对象名直接调用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值