python类的创建、调用、定制和继承


只是做学习记录和笔记整理,如有错误欢迎指正~

一、类的创建和调用

(一)类与对象的定义


  • 是多个类似事物组成的群体的统称,类之下都包含着无数个不同的个例。在python中就把类的个例叫做实例。它们之间的关系类似群体和个体的关系,每个个体都有着相同的特征和行为。
  • 对象
    无论是类还是实例,都可以当作是行动或思考的对象。前者是类对象,后者是实例对象

(二)类的创建与调用

1.类的创建:
类名的首字母要大写,格式为:class+类名+冒号:

  • 属性
    描述事物是怎样的,有什么特征,如黑眼睛、黄皮肤。在类中赋值的变量叫做属性
  • 方法
    描述事物能做什么,有哪些行为和作用
    实例方法是指类中参数带self的函数
class Computer:#类的创建 class+类名+:
	screen=True#类的属性创建 通过赋值语句
	def start(self):
		print('电脑正在开机')
  • 与函数定义语句不同的是,实例方法中必须有个放在首位的sefl参数
  1. 类的调用
    调用的方法是实例.属性实例.方法
    每个实例都可以调用类中的属性和方法
class Computer:#类的创建 class+类名+:
 	screen=True#类的属性创建 通过赋值语句
 	def start(self):
 	 print('电脑正在开机')
 my_computer=Computer()
 print(my_computer.screen)
 my_computer.start()

(三)两个关键点

  1. 特殊参数self
    self是所有实例的替身,即需要有一个变量self来代替接收数据。
Class Chinese:
	name='小明'
	def say(self):
		print(self.name+'是中国人')
		#本来应该是person.name,但实例peron还没创建,用self参数来代替接收数据
person=Chinese()
person.say()
  • 与函数的区别
    用类编写不用考虑全局变量和局部变量,在类的方法内部调用类属性或其他方法时,就可以采用self.属性名self.方法名的格式。
Class Chinese:
 	name='小明'
 	def say(self):
  		print(name+'是中国人')
#此时会报错,name在say方法中没有被定义。
  1. 初始化方法
    定义初始化方法的格式是def init(self),是由init加左右两边的【双】下划线组成
    初始化方法的作用在于:
  • 当每个实例对象创建时,该方法内的代码无须调用就会自动运行,不必重复传入参数。
class Chinese:
	def __int__(self):
		print('很高兴遇见你,我是初始化方法')
person=Chinese()
  • 可以接收其他参数,作为属性在类的方法之间流转。
class Chinese:
	def __init__(self,birth,name,region):
		self.birth=birth
		self.name=name
		self.region=region
	def born(self):
		print(self.name+'出生在'+self.birth)
person=Chinese()
person.born()

在这里插入图片描述

二、类的定制和继承

(一)类的继承

在这里插入图片描述

  • isinstance()
    用来判断某个实例是否属于某个类,输入两个参数,第一个是实例,第二个是类或类组成的元组,输出是布尔值(True 或 False)
print(isinstance(1,int))
print(isinstance(1,str))
  1. 多层继承
    子类创建的实例可调用所有层级父类的属性和方法。
class People:#父类
	pass
class Chinese(People):#子类
	pass
xiaoming=Chinese()#子类的实例
kevin=People()#父类的实例
print('\n验证1:子类创建的实例也属于父类)
print(isinstance(xiaoming,People))
print('\n验证1:父类创建的实例不属于子类)
print(isinstance(kevin,Chinese))

如果要为每个省级行政区的人各创建一个类,并添加各种属性和方法。那么,只要创建一个父类Chinese,在父类中将共同的属性和方法写好,然后34个类都可以通过类的继承得到Chinese的属性和方法,代码量可以减少十几甚至几十倍。
2. 多重继承

  • 在子类调用属性和方法时,优先考虑靠近子类的父类。
  • 若父类还有父类的话,会先继续往上找到顶
    在这里插入图片描述
class C0:
	name='C0'
class C2(C0):
	num=2
class C1:
	num=1
class C3:
	num=1
class C4(C1,C2,C3):
	pass
ins=C4()
print(ins.name)#打印出C0
#先找C1,再找C2,再找C2的父类C0
print(ins.num)#打印出1
#先找C1			

(二)类的定制

子类可以在继承的基础上进行个性化的定制:
(1)创建新属性、新方法

class Chinese:
	eye='black'
	def eat(self):
		print('我们都是中国人')
class Fujianren(Chinese):#类的继承
	native_place='fujian'#类的定制:创建新属性
	def dialect(self):#类的定制:创建新的方法
		print('我们的方言很不一样')
xiaoming=Fujianren()
print(xiaoming.eye)#父类的属性也能用

(2)修改继承到的属性或方法

class Chinese:
	def land_area(self,area):
		print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)
class Cantonese(Chinese):
	def land_area(self,area,rate=0.0188):#类的定制:修改继承到的方法
		Chinese.land_area(self,area*rate)#用父类.方法(self,新的参数)
		
class Chinese:     
	def __init__(self, greeting = '你好', place = '中国'):        
		self.greeting = greeting        
		self.place = place     
	def greet(self):        
		print('%s!欢迎来到%s。' % (self.greeting, self.place)) 
class Cantonese(Chinese):     
	def __init__(self, greeting = '雷猴', place = '广东'):        
		Chinese.__init__(self, greeting, place)#用父类.__init__(self,参数2,参数3)    
yewen = Cantonese()
yewen.greet()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值