Python中的类

本文详细介绍了Python中的类,包括类对象、属性、实例化、初始化方法`__init__`、`__str__`和`__repr__`方法、实例对象、实例属性和类属性、类方法和静态方法、访问控制、属性装饰器、对象的销毁以及方法的重载等概念。通过实例展示了Python类的使用方式,强调了封装和访问控制的重要性。
摘要由CSDN通过智能技术生成

Python的类

定义

class ClassName:
    语句块
  1. 必须使用class关键字
  2. 类名必须是用大驼峰命名
  3. 类定义完成后,就产生了一个类对象,绑定到了标识符ClassName上
    例如:
class MyClass:
    """我类的注解"""
    x = 'abc' # 类的属性

    def foo(self): #类属性foo,也是方法(属性foo指向了foo方法对象)
        return "My Class"
print(MyClass.x)
print(MyClass.foo)
print(MyClass.__doc__) #查看类的注解

class_001

类对象及属性

  • 类对象:类的定义执行后会生成一个类对象
  • 类的属性:类定义中的变量和类中定义的方法都是类的属性
  • 类变量:上例中x是类MyClass的变量,同时也是类的属性x
    MyClass中,x、foo都是类的属性, __doc__ 也是类的特殊属性
    foo是类的属性,如同吃时人类的方法
    foo是方法method,本质上就是普通的函数对象function,它一般要求至少有一个参数。第一个形式参数可以是 self(self只是个惯用标识符,可以换名字),这个参数位置就留给了self。
    self指代当前实例本身

实例化

a = MyClass() #实例化

使用上面的语法,在类对象名称后面加上一个括号,就调用类的实例化方法,完成实例化
实例化就真正创建一个该类的对象(实例)。例如

tom = Person() #根据Person类创建了一个tom对象
jerry = Person() #根据Person类创建了一个jerry对象

上面的tom、jerry都是Person类的实例,通过实例化生成了2个实例。
每次实例化后获得的实例,是不同的实例,即使是使用同样的参数实例化,也得到不一样的对象。
Python类实例化后,会自动调用 __init__ 方法。这个方法第一个形式参数必须留给self,其它参数随意。

__init__初始化方法

MyClass()实际上调用的是 init(self) 方法,可以不定义,如果没有定义会在实例化后隐式调用。
作用:对实例进行初始化

  • 注意: __init__方法不能有返回值,也就是只能是return None
class MyClass:
    def __init__(self):
        print("init")
print(MyClass) # 不会调用
print(MyClass()) # 调用__init__
a = MyClass() # 调用__init__

初始化函数可以多个参数,请注意第一个位置必须是self,例如 __init__(self, name, age)

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def showage(self):
        print('{} is {}'.format(self.name, self.age))

tom = Person('Tom', 20) # 实例化,会调用__init__方法并为实例进行属性的初始化
jerry = Person('Je', 25)
print(tom.name, jerry.age)
jerry.age += 1
print(jerry.age)
jerry.showage()

class_002

__str__转string方法

  • 相当于java中的toString方法,方法必须返回一个str类型的字符串
  • 在类对象被转为str类型时调用。返回对象的str类型。
  • 如果没有定义__str__方法,默认会调用父类的__str__方法。
    • 父类的__str__方法返回值为:“main.{} object at {}”.format(类名,类在内存中的内存地址(16进制表示))
class xdd:
    def __init__(self,name = "xdd"):
        self.name = name
    def show(self):
        print("我是{}对象".format(self.name))
    def __del__(self):
        sys.stdout.writelines("{}被销毁了\n".format(self.name))

class xdd2:
    def __init__(self,name = "xdd"
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值