Python基础——类与对象

Python基础——类与对象

类与对象

数据类型

不同的数据类型属于不同的类
使用内置函数查看数据类型(通常有两种)

type(obj)#查看数据的数据类型,即对象所属的类,返回类型
isinstance(obj,class)#查看对象是否是class类,返回True/Fales

例如:`

print("100的数据类型:",type(100))
print('a的数据类型',type('a'))
print('99的数据类型',type(99))

输出:
输出的数据类型为 <class ‘int’>形式,即100属于int类,只不过这个类是python已经给我们定义好的
在这里插入图片描述

对象

python中一切皆对象,拥有:id,类型,值
100,99都是int类之下包含的不同个例,a 是str类之下包含的个例,这个个例就称为“实例”或者“对象

类的创建

创建语法

规范:类名由一个或者多个单词组成,单词开头字母一般大写其余小写。

class 类名:#一般类名首字母大写
	pass
#定义一个学生类
class Student:
	pass
#python中一切皆对象,输出一下对象的三要素
print(id(student))#内存地址
print(type(student))#类型
print(student)#value值

输出

在这里插入图片描述

类的创建

类中包含:

  • 类属性 (直接定义在类里的变量)
  • 构造方法(用于实例化对象的参数)
  • 实例方法 (定义在类里的函数称之为方法)
  • 静态方法 (使用@staticmethod修饰发方法,为静态方法,和类和对象没有关系,和在类外是一样 的,但是为了区别,调用方式是不一样的,定义在类内部称为静态方法调用的时候,要拿着类或者对象去调用)
  • 类方法 (使用@classmethod修饰发方法,为类方法,必须用容器修饰)
#定义一个学生类
class Student:
    native_pace = '河北'#类属性
    #构造方法
    def __init__(self,name,age):#name,age为局部变量
        self.name = name# 进行一个赋值操作,将局部变量name的值赋给实体属性。self.name 为实体属性
        self.age = age

    #实例方法
    def eat(self):#()里必须传入:self
        print('学生正在吃饭。。。。')


    #静态方法
    @staticmethod
    def method():#静态方法()里不能像实例方法一传入:self
        print('使用@staticmethod修饰发方法为:静态方法')

    #类方法
    @classmethod
    def cm(cls):#()里必须传入class的缩写 : cls
        print('用@classmethod修饰的方法为:类方法')
        
        

对象的创建

  • 对象的创建 又称 类的实例化
  • 语法:实例名/对象名 = 类名()
  • 意义:有了实例,就可以调用类中的内容
  • 创建对象时要()里对应传入__init__函数形参对应的实参值
#创建一个student类的对象
stu1 = Student('王五',20)#创建对象时要对应传入__init__函数形参对应的实参值
#打印对象属性
print(stu1.name)
print(stu1.age)

print(id(stu1))#python在内存中为stu1对象开辟了内存空间
print(type(stu1))#查看stu1对象的类型
print(stu1)#查看stu1对象value值,是存储id的16进制

输出:
在这里插入图片描述

对象调用类中的内容

  • 方法一
    对象名.方法名
#调用类中的方法
stu1.eat()
  • 方法二
    类名.方法名(对象名)
#调用类中的方法
Student.eat(stu1)

输出:两种方法的输出结果是一样的
在这里插入图片描述

类属性,类方法,静态方法

类属性

类中方法外的变量,被该类的所有对象所共享

  • 类属性的使用方式: 使用类名调用
    类名.类属性

访问类属性

#访问类属性:
print(Student.native_pace)

#创建一个student类的对象
stu1 = Student('王五',20)
stu2 = Student('张三',18)
print(stu1.native_pace)
print(stu2.native_pace)
print('---------修改类属性----------')
Student.native_pace = '三亚'
print(stu1.native_pace)
print(stu2.native_pace)

输出:
在这里插入图片描述

类方法

使用@classmethod修饰发方法,为类方法,必须用容器修饰
()里必须传入class的缩写 : cls

 #定义类方法
@classmethod
def cm(cls):#()里必须传入class的缩写 : cls
	print('用@classmethod修饰的方法为:类方法')

类方法使用方式

类名.方法

#访问类方法
Student.cm()

输出:
在这里插入图片描述

静态方法

使用@staticmethod修饰发方法,为静态方法,和类和对象没有关系,和在类外是一样的,但是为了区别,调用方式是不一样的,定义在类内部称为静态方法调用的时候,要拿着类或者对象去调用
静态方法()里不能像实例方法一传入:self

#定义静态方法
@staticmethod
def method():#静态方法()里不能像实例方法一传入:self
	print('使用@staticmethod修饰发方法为:静态方法')

静态方法使用方式

  • 方法一:
    类名.静态方法
  • 方法二:
    对象名.静态方法
Student.method()#方法一
stu1.method()#方法二

输出:
在这里插入图片描述

属性的访问

定义一个类People
class People(object):
    #定义属性
    name = 'Tommy'
    age = ''
    height = ''
    adds = 'SH'
    #构造方法
    def __init__(self,name,age,height):
        self.name = name
        self.age = age
        self.height = height
    #实例方法
    def eat(self):
        print(f'{self.name}在吃饭')

    def sleep(self):
        print(f'{self.name}在睡觉')

# 类的使用
#1、通常实例化一个对象
people = People('kiki','20','170')
tom = People('tom',20,175)
#访问类属性
print(People.name)
print(getattr(People,'name'))
#访问对象属性
print(tom.name)
print(people.adds)
print(getattr(tom,'name'))
#属性不存在时访问:报错:不存在
print(tom.hobby)
print(getattr(People,'hobby'))

#对象.方法
people.eat()
tom.sleep()
#类名.方法(对象)
People.eat(people)

# print(type(people.age))
# print(type(tom.age))

#修改属性
tom.age = 22
print(tom.age)
setattr(people,'age',24)
print(people.age)

#修改一个不存在的属性,如果有,就会修改原来的值,如果没有就会新建一个属性
tom.hobby = 'music'
setattr(people,'hobby','dunce')
print(people.hobby)

#判断属性是否存在
hasattr(tom,'hobby')
hasattr(People,'hobby')

#删除属性,属性不存在就会出错
delattr(tom,'age')
delattr(People,'hobby')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅家的北极熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值