python_类1_类属性&实例属性_类方法&实例方法&静态方法

1、类的定义:

class  类名1():
	属性:类属性、实例属性
	方法:类方法、实例方法、静态方法

class():
	pass
	
class(object):
	pass

所有的类都继承于objectobject是所有类的父类,可以省略
类名:大驼峰 ClassName

对象 == 实例 == object------->类产生的实例,实例化

类属性:类中每个成员共有的特征
实例属性(对象属性):类中成员不一定具备的特征

类方法:类中每个成员都具备的特征,类和对象都可以调用
实例方法(对象方法):不属于整个类共同的行为,需要一个单独的成员调用的方法,类不能调用

2、类属性和实例属性:

class Cat():
	#所有的猫都有2只眼睛,4条腿,这是整个类共有的
    eye = 2  #类属性
    leg = 4  #类属性

现在要实例化一只猫,不可能所有的猫都一模一样,有白猫,有黑猫,有叫小黑的猫,有叫小白的猫,那么怎么区别呢?
这时候就需要一个初始化函数来定义猫的这些特征

class Cat():
    eye = 2  #类属性
    leg = 4  #类属性
    def __init__(self,name, body_color):  #初始化
        self.name = name  #实例属性
        self.body_color = body_color  #实例属性
xiaobai = Cat('xiaobai', 'write')
print(Cat.eye)  #类  获取类属性
# print(Cat1.body_color)  #类 获取对象属性,报错(类不能获取对象属性)

print(xiaobai.eye)  #对象 获取类属性
print(xiaobai.body_color)  #实例获取对象属性

上面的Cat类中,leg,eye是类属性,整个类共有的,是类属性
name,body_color是类中个体的特征,是实例属性

init() :函数是初始化函数,实例化的时候自动调用

3、类方法、实例方法、静态方法

静态方法:
当想在一个类当中定义一个静态方法,这个方法和类或者对象没有直接关系
即方法中没有使用对象,也没有使用类,
类和对象都可以调用
存在理由:方便管理

    固定写法
实例方法:
	def 方法名(self):
	
类方法:
    @classmethod
    def 方法名(cls):
    
静态方法:
	@staticmethod
	def 方法名():

3-1、定义一个类,来看看类方法和实例方法的不同:

class Dog():
    eye = 2
    leg = 4
    taile = True
    def __init__(self,name, body_color = 'grey'):  #实例方法
        self.name = name
        self.body_color = body_color
        # print(self)

    # 进化1--->实例方法
    def jinhua1(self):
        print('第一次进化:--->变两个尾巴')
        self.taile = 2
        # 是实例方法,只改变一个实例,个体的改变不能叫作进化

    # 进化2--->实例方法
    def jinhua2(self):
        print('第二次进化--->没有尾巴')
        Dog.taile = False
        # 是实例方法,但是用类名(Dog.)来更改,
        # 当调用了这个函数,实例化的所有狗都会变成没尾巴

    #类方法
    @classmethod
    def jinhua3(cls):  # 进化3--->实类方法
        print('第三次进化--->会直立行走')
        cls.leg = 2

    #静态方法,没有用到self
    @staticmethod
    def say(time):
        print(f'汪汪{time}声')
a = Dog('a')
print(f'a的尾巴:{a.taile}')
b = Dog('b')
print(f'b的尾巴:{b.taile}')

a.jinhua1()
print(f'a的尾巴:{a.taile}')
print(f'b的尾巴:{b.taile}')

在这里插入图片描述

a.jinhua2()
print(f'a的尾巴:{a.taile}')
print(f'b的尾巴:{b.taile}')
print(f'c的尾巴:{c.taile}')

在这里插入图片描述

b.leg = 3
a.jinhua3()
print(f'a的leg:{a.leg}')
print(f'b的leg:{b.leg}')
print(f'c的leg:{c.leg}')

在这里插入图片描述
3-2、self

class Cat():
    eye = 2
    def __init__(self,body_color = 'grey'):  #实例方法
        self.body_color = body_color
        print(self)
    #对象没有产生时,要表示自己,用self代表
    #比如即将产生的猫的颜色self.body_color
    #self表示类中即将产生的对象
heh = Cat()
print(heh)
#打印(heh)和打印类里的(self),结果相同,一个是类中的叫法,一个是类外面的叫法

#类中的self也可以整体改成其他的变量名,但不要这样做
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值