Python知识点7——类

本文深入解析Python中类的定义与使用,包括构造函数、成员变量、成员函数及通过实例化对象调用成员函数的过程。同时,详述了类的继承机制,包括如何重写父类方法和使用super函数调用父类构造函数。最后介绍了类的导入方法。

定义一个类

Python中,定义类的方式是:class classname():

class cat():

	def __init__(self, name, age):#Python中的构造函数,初始化四个成员变量
		self.name=name
		self.age=age
              self.size='small'
              self.hungrystat=False;
		print('__init__ function run')#四个成员变量

	def sit(self):
		print(self.name.title()+'is sitting')

	def roll(self):
		print(self.name.title()+'is rolling')
  
   def sethungrystat(self, hungrystat):
		self.hungrystat=hungrystat

instance=cat('tom',1)#实例化
instance.sethungrystat(hungrystat=True)#修改成员变量的状态
print(instance.hungrystat)

class cat():表示创建一个类,类名是cat,后面的括号和分号不能省略,缩进部分表示类中的函数

 

每个类中都有__init__函数,在类被实例化时调用,类似于C++中的构造函数,Python直接在__init__函数中声明并初始化成员变量(self.name=name self.age=age)

成员变量可以在__init__函数中随意添加,例如self.size

 

self代表类的实例本身,当执行 instance=cat('tom',1)后,instance就是cat的一个实例,self就是instance,self类似于C++中的this指针,当调用成员函数时,self自动传入成员函数

 

可以通过成员函数来修改变量的值,比如cat类中的sethungrystat函数

 

类的继承

Python中,继承类的方式是:class classname(parentclassname):

class cat():

	def __init__(self, name, age):
		self.name=name
		self.age=age
		self.size='small'
		self.hungrystat=False;
		print('__init__ function runs')

	def sit(self):
		print(self.name.title()+'is sitting')

	def roll(self):
		print(self.name.title()+'is rolling')

	def sethungrystat(self, hungrystat):
		self.hungrystat=hungrystat

class cat1(cat):#父类是cat,子类叫cat1,

	def __init__(self, name, age, color):
		print('__init__ in cat1 runs')
		super().__init__(name, age)
		self.color=color#子类独有的成员变量

	def roll(self):#子类中重写父类的roll函数
		print(self.name.title()+'is rolling in cat1')
  
instance=cat('tom',1)
instance.roll()#调用父类的roll函数
instance.sethungrystat(hungrystat=True)
print(instance.hungrystat)

print('----------------')

instance1=cat1('jerry',1)
instance1.sit()#调用父类的sit函数
instance1.roll()#调用子类的roll函数
print(instance1.color)

子类__init__函数中的super函数返回父类的实例,然后调用父类的init方法

 

python中,子类继承父类时,子类会继承父类所有的成员函数和成员变量,同时子类可定义自己的成员变量和成员函数

cat1拥有cat的所有成员变量和函数,同时cat1自己定义了color成员

 

如果在子类中重写了父类的函数,在调用该函数时,子类的实例不会调用父类的方法,而是直接调用子类的方法

cat1中重写了父类的方法roll,所以cat1的实例在调用roll的时候,不会再调用父类的方法,而会调用子类的方法

 

如果在子类中没重写了父类的函数,在调用该函数时,子类的实例会调用父类的方法

子类cat1没有重写sit函数,所以子类调用的是父类cat的sit方法

 

导入类

import关键字不仅可以导入函数,也可以导入类,导入方式和函数类似

关于import的详细说明已经在我的博客Python知识点6——函数中详细说明

1.导入类

from classtest import cat, cat1

instance=cat('tom',1) 

from classtest import cat, cat1表示从classtest.py文件导入两个类cat和cat1,当然也可以只导入一个

from classtest import cat, cat1也可以写为from classtest import *(导入所有类),这种写法不建议使用,容易引起命名冲突

 

2.导入模块

import classtest as ct

instance=ct.cat('tom',1)

 

参考:

《Python编程从入门到实践》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值