python类和对象

本文详细介绍了Python中的类和对象,包括类的定义、属性、方法以及对象的创建。类是事物的抽象,用于封装属性(如类属性和对象属性)和方法。对象属性可通过对象直接赋值或初始化方法设置。类方法、静态方法和私有属性的概念也被阐述,强调了它们在类和对象中的不同使用方式和访问规则。此外,还提供了多个示例来演示这些概念的实际应用。
摘要由CSDN通过智能技术生成

python类和对象

一、类和对象

1.类定义

    类是一类事务的抽象概念(模型),部署真实存在的,描绘了该事物共同的特征和行为

    类可以用来封装一类事物共同的特征和行为

   特征:属性

   属性:定义在类里面的变量

   行为:方法(函数)

   方法:定义在类里面的函数

2.类的关键字:class

3.语法:

方式一:
class 类名:
    #类的属性和方法   
方式二:   
class 类名 (object):
    #类的属性和方法

4.类名定义的规范:

  • 1.遵循标识符的命令规范
  • 2.严格遵循大驼峰命名法(每个单词第一个字母必须大写)

 

二、类的属性

1.类作用

    可以用来封装属性和方法

2.属性:

    定义在类里面的变量

    类属性:直接定在在类里面的变量(这个类的每个对象都有这个属性,而且属性值是一样的)

    对象属性(实例属性):这一类事物都可能会有这个属性,属性值有可能不一样

   

3.对象属性的定义及赋值:

        方式一:通过对象进行赋值:

             对象.属性=属性值

      方式二:通过初始化方法__init__进行定义

             self.属性=属性值

4.类属性例子

例子:属性的赋值,获取属性的值

例子1:
class Cat:
    attr1 = "喵喵喵"
    attr2 = "长毛"
    attr3 = "爱吃鱼"

#通过对象添加属性
c1=Cat()
c1.name="叮当猫"
c1.gender="公"
c1.age=18
        
例子2:
class Cat:
    attr1 = "喵喵喵"
    attr2 = "长毛"
    attr3 = "爱吃鱼"

    def __init__(self,name,gender,age):
        #通过类去创建对象的时候,该方法会自动调用
        #初始化对象属性
        print("这个是self",self)
        print(name, gender, age)
        self.name = name
        self.age = age
        self.gender = gender

        print("init方法创建对象的时候自动调用")

c1=Cat("叮当猫","公猫",18)
print("这个是c1",c1)

例子2输出:

5.方法:定义在类里面的函数

6.对象:通过类创建出来的,拥有这个类所有的特征和行为

    通过类创建对象:

        obj=类名()

self:代表的是对象本身,哪个对象去调用方法,self代表的就是哪个对象

 

三、类的方法【对象方法】

1.类里面的方法:self

  •      类里面定义的函数叫方法
  •      方法的第一个参数必须写成self(这个规范)

2.通过对象获取属性

     print(c1.attr1)

3.使用对象去调用方法:

    对象.方法名    c1.skill1()

4.类不可以直接调用方法

注意:类不可以直接调用方法,会提示少一个参数self

5.例子

通过对象获取属性
print(c1.attr1)
print(c2.attr1)

#使用对象去调用方法:     对象.方法名

c1.skill1()

#属性访问和方法的调用

#对象可不可以访问类属性
print(c1.attr1)     #可以的
#对象可不可以访问对象属性
print(c1.name)      #可以的
#对象可不可以调用方法
c1.skill1()         #可以的


#类可不可以访问类属性
print(Cat.attr1)    #可以的
#类可不可以访问对象属性
print(Cat.name)     #不可以的
#类可不可以调用方法
print(Cat.skill1())     #不可以,会提示少一个参数self,【原因缺少一个对象】

 

四、类的方法【静态方法,私有属性】

1.类属性:定义在类里面的变量

  •     公有属性:在类外面,通过类和对象都可以访问
  •     私有属性:只能在类里面访问,类外面是不能去访问的

2.私有属性(双下划线)的定位:

  •     以单下划线开头 _attr=10【在类外面可以使用,但是大家不用去使用】
  •     以双下划线开头 __attr=200【在类外面不能直接访问】
  •     扩展:双下划线开头的私有属性,在保存的时候其实换了个名字(__属性 --》 _类名__属性)
print(t1._TestClass__attr)

print(TestClass._TestClass__attr)

3.例子

class TestClass:
    attr=100
    _attr = 10
    __attr = 200

t1=TestClass()
print(t1.attr)
print(TestClass.attr)

print(t1._attr)

print(t1._TestClass__attr)
print(TestClass._TestClass__attr)
输出:
100
100
10
10
10

4.对象方法(实例方法):

  • 1.通过对象去调用的:对象.方法名
  • 2.类不能直接访问对象方法。对象可以直接调用对象方法
  • 3.对象方法的第一个参数,是self,self代表的是对象本身
  • 4.只能通过对象去调用的:对象.方法名()

5.类方法@classmethod:

  •     类方法的定义:在定义的方法前加一个@classmethod
  •     类方法的第一个参数,是cls,cls代表的是类本身
  •     既可以通过对象去调用也可以通过类去调用:对象.方法名     类.方法名()
  •      应用场景:如果这个方法以类为主体去调用,方法内部不会涉及到对象属性和对象方法的使用,那么该方法就应该定义为类方法

6.静态方法@staticmethod:

  •     静态方法的定义:在定义的方法前加一个@staticmethod
  •     参数:没有必须要定义的固定参数
  •     既可以通过对象去调用也可以通过类去调用:对象.方法名    类.方法名()
  •     应用场景:方法内部既不会使用类属性和类方法,也不会使用对象属性和对象方法

7.例子

class TestClass:
    attr=100
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def func1(self):
        print("对象方法一")

    @classmethod
    def func11(cls):
        print("这个是类方法:func11")

    @staticmethod
    def func():
        print("这个是静态方法:func")

t2=TestClass("小明",18)

#类不能直接访问对象方法。对象可以直接调用对象方法
t1=TestClass()
t1.func1()

#类方法
t1.func11()
TestClass.func11()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值