python基础--面向对象知识点概述

1、类、对象的概念

类:事和物的一个分类,只是概念(比如飞机图纸)
对象:具体到某一个事或物(我开过的那架飞机就是对象)

2、类和对象

定义类,使用class
类里面有属性(特征)和方法(行为)
类名首字母必须大写

class Teacher(object):
    #定义一个属性,如国籍
    country = 'China'
    #方法,行为
    def talk(self):
        print('11')
#通过类创建对象(在内存中开辟了一块空间,存储这个对象)
teacher = Teacher()
print(teacher)
print(teacher.country)
#利用对象调用方法
teacher.talk()

结果
<main.Teacher object at 0x0000024466788780>
China
11

2.1动态添加属性

给对象添加属性及属性值teacher.name=“zhangsan”
teacher.age=18

2.2 __init__魔法方法

当前需要完成某个功能操作,python自动调用的方法
当前对象初始化的时候自动调用
魔法方法,以__开头,以__结尾
给对象设置属性值的时候调用

class Teacherobject):
	def __init__(self,name,age):
		self.name=name
		self.age=age
t1=Teacher("zhangsan",18)
print(t1.name,t1.age)

创建对象的时候后面带不带值,看类的__init__方法中有没有参数

2.3类的继承

分为单继承和多继承

  • 单继承:子类只继承一个父类

基类(父类),子类(派生类)

方法:对象方法,使用对象调用的,也叫实例方法

class Person(object):
	def __init__(self):
		self.name="zhangsan"
		self.age=18
	def show(self):
		print(self.name,self.age)
class Student(Person):
	pass
s1=Student()
s1.show()
#子类的对象可以使用父类的属性
  • 多继承:继承多个父类
class A(object):
	def show(self):
		print("A")
class B(object):
	def show(self):
		print("B")
class Student(A,B):
	pass

当父类的方法相同时,遵循mro,类的继承顺序,决定调用时查询的顺序。先去本类,再去第一个父类
print(Student.mro())

[<class ‘main.Student’>, <class ‘main.A’>, <class ‘main.B’>, <class ‘object’>]

  • 子类重写父类方法
    场景:父类的方法无法满足该子类的需求
    前提:有继承关系。且方法名相同

2.4 私有方法和私有属性

在属性名或方法前加__就是私有属性和方法

  • 在类外查询所有属性方法(包含私有属性)print(person.dict)
class Person(object):
	def	__init__(self,name,age):
		#公有属性
		self.name = name
		#私有属性:只能在本类中使用,在类的外部无法使用(无法继承)
		self.__age = age
	#公有方法
	def show(self):
		print("公有方法")
	#私有方法
	def __money(self):
		print("私有方法")
person = Person("zhangsan",20)
print(person.name)
print(person.__age) #会报错,无法访问私有属性
#在类外如何查看私有属性
print(person.__dict__)

在这里插入图片描述

  • 在类外查看所有方法print(Person.dict)
  • 查看object的所有方法 print(object.dict)

2.5类属性、类方法

在方法外和类内部定义的属性

class Person(object):
	#定义一个类属性
	country = "China"
	#定义一个类方法,用@classmethod标志
	@classmethod
	def get_age(cls):
		cls.age = 18
	

类属性、类方法与对象属性对象方法详细描述见上篇文章
Python类属性、类方法与对象属性、对象方法的互相访问权限总结

2.6静态方法

与类、对象没有任何关系

class Person(object):
	#定义一个静态方法,用@staticmethod标志
	@staticmethod
	def help_info:
		print("这是帮助界面"

2.7 多态

不同的子类调用相同的父类方法,产生不同的执行结果。可以增加多态
是一种调用技巧

#各个类的方法相同
class Text(object):
	def show(self):
		print("文字"class Image(object):
	def show(self):
		print("图片"class Video(object):
	def show(self):
		print("视频"def show_data(data):
	data.show()
#分别对应不同类创建对象
text=Text()
image=Image()
video=Video()
#可以直接调用不同对象方法
show_data(video)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值