python类

本文介绍了Python中的类,包括类的定义、语法、成员、类变量、实例变量、方法及构造方法。类是对象的抽象,用于定义变量、创建对象和派生子类。文章详细阐述了类变量和实例变量的定义、调用与修改,以及方法的定义和与函数的区别。
摘要由CSDN通过智能技术生成

数据分析

python

基础学习

一、类(class)
1. 基础
1.1 定义:
  • 类是某一批对象的抽象,可以理解成某种概念。
  • 例如:str/list/dict/tuple均为一个类。
1.2 语法:
  • class 类名:
    执行语句…
    零个到多个类变量…
    零个到多个方法…
1.3 成员:
  • 类变量、实例变量、方法;
    如果不定义任何类变量和方法,这个类就相当于空类,可以使用pass语句作为占位符;
    成员之间定义顺序没有任何影响,可以相互调用;
class Empty:
	pass
2. 类变量、实例变量
class Person():
	name = "xiaoming"
	age = 25
#Person.name即为类变量
a = Person()  #类的实例化,a即为一个对象
a.gender = "male"
#a.gender即为实例变量

#encoding:utf-8
class TestClass(object):
  classval1 = 100   #类变量
  def __init__(self):
    self.memval2 = 200   #实例变量
    self.memfuntion2(600) #调用成员方法
  def memfuntion1(self,val = 400):
    localval3 = 300    #函数内部的局部变量
    self.nmval4 = val
    self.nmval5=500
  def memfuntion2(self,val = 600):
    self.memval6 = val			#实例变量
    self.memval7=700			#实例变量
if __name__ == '__main__':
    inst = TestClass()
    print(TestClass.classval1)			#100
    #print(TestClass.memval2 		#不能运行,类名不要调用实例变量
    print(inst.classval1)   #100,(因为实例化,所以也可以用对象名调用类变量)
    print(inst.memval2)		#200
    #print(inst.localval3)		#不能运行,变量未在init初始化
    #print(inst.nmval4)			#不能运行,变量未在init初始化
    #print(inst.nmval5)			#不能运行,变量未在init初始化
    print(inst.memval6)			#600,已在init初始化
    print(inst.memval7)			#700,已在init初始化
2.1 类变量

定义:

  • 属于类本身,用于定义该类本身定义的属性,不会用于记录具体对象的特征;
  • 在类体中定义;

调用:

  • 可以由类名直接调用,也可以由对象名来调用;
  • 类的所以实例对象都可以访问类变量;

修改:

  • 类变量只能由类修改,实例对象只有读权限;
class TestDemo():
    age = 20
    name = "xiaoming"
    def __init__(self):
        self.instance = 1
        
testinst1 = TestDemo()   #类的实例化

TestDemo.age = 21  #通过类修改类属性
testinst1.name = "hongxiao"  #通过对象“修改”(增加)属性

testinst2 = TestDemo()  #新的实例

print(testinst1.name)   #hongxiao ,对象1新增name=“hongxiao”属性
print(testinst2.age)   #21,对象2的age属性已通过类修改
print(testinst2.name)  #xiaoming , 对象2的name属性不变
2.2 实例变量

定义:

  • 在类的构造函数内以self.开头来定义(或在构造函数中初始化)
  • 各实例变量之间不影响

调用:

  • 可以由类的对象来调用
  • 类名不能调用实例变量

修改:

  • 使用对象名.类变量名 = new_value ;
  • 实例变量由实例对象修改,类修改实例变量没意义
class Demo:
    # 类变量
    classVar = 0
    def __init__(self):
        # 实例变量
        self.instanceVar = 1

if __name__ == '__main__':
    print(demo1.instanceVar)  # 1
    print(demo2.instanceVar)  # 1
    # 各实例对象间的实例变量互相不影响
    demo1.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1
    # 用类修改实例变量没意义
    Demo.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1

方法
类继承
if name == main

3. 方法:
5.1 定义:

用于定义该类对象的行为或功能实现;
在类中定义的方法默认是实例方法,定义实例方法与定义函数基本相同;
实例方法的第一个参数会被绑定到方法的调用者(该类的实例);
实例方法至少应该定义一个参数,该参数通常会被命名为self。

5.2 方法与函数的区别:

函数:
区别:不属于某个类的函数叫函数
调用:函数采用func(x)形式调用
归纳:与类和实例无绑定关系的function都属于函数

def fun():
	pass
print fun
#结果:<function fun at 0x00000000022BC3C8>

方法:
区别:属于某各类的函数交方法
调用:方法采用对象a.func(x)形式调用,方法仅作用与前导的对象。
归纳:与类和实例有绑定关系的function都属于方法

class Apple():
	def fun1(self):
		return "normal"
	@staticmethod
	def fun2():
		return "staticmethod"
	@classmethod
	def fun3(cls):
		return "classmethod"
print(Apple.fun1)  #结果:<unbound method Apple.fun1>
print(Apple.fun2)  #结果:<function fun2 at 0x00000000021DC4A8>
print(Apple.fun3)   #结果:<bound method classobj.fun3 of <class __main__.Apple at 0x0000000001D8C768>>
5.3 构造方法:

在实例方法中有一个特别的方法:_ init _,这个方法被称为构造方法。
构造方法用于构造该类的对象,Python 通过调用构造方法返回该类的对象(无须使用 new)。

6. 类的作用:

定义变量;
创建对象;
派生子类;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值