«

Python第九课,面向对象介绍

时间:2023-2-27 21:20     作者:wen     分类: Python


类和对象:
类: 是具有一组, 相同或者相似特征[属性] 和行为[方法]的一系列对象的组合
对象: 是实实在在的一个东西, 类的实例化, 具象化

# 定义类和对象

class Person():
    """
    属性
    """
    name = 'zhangsan' #类属性
    age = 20

    def __init__(self):
        self.name = '李四'  # 实例属性
    """
    方法
    """
    def eat(self):
        print('吃饭')
        pass

    def walk(self):
        print('走路')
        pass

# 创建对象
xm = Person()

# 调用方法
xm.eat()
xm.walk()

# 调用属性
print('xm的姓名是:%s,年龄是:%d' % (xm.name, xm.age))

实例方法
在类的内部, 使用 def 关键字定义, 第一个参数默认是 self[名字标识可以是其它的名字, 但是这个位置必须被占用], 实例方法是归于类的实例所有

属性: 在类的内部定义的属性, 方法外面的属性称为类属性定义方法里面是有 self 引用的属性称为实例属性.

总结 init

  1. python 自带的内置函数, 具有特殊的函数, 是有双下划线包起来[魔术方法]
  2. 是一个初始化方法, 用来定义实例属性, 和初始化数的, 在创建对象的时候自动调用, 不用手动调用
  3. 利用传参的机制可以让我们定义功能更加方便

self 和对象指向同一个内存地址, 可以认为self就是对象的引用

self 只有在类中定义, 实例方法的时候才有意义, 在调用时候不必传入相应的参数, 而是由解释器, 自动去指向
self 的名字可以更改, 可以定义成其他的名字, 只是约定成俗的定义成了 self
self 指的 是类实例对象本身, 相当于C++ 的 this

魔术方法(常用的几种)
inif :初始化一个类对象
str : 将对象转换成字符串 str(对象) 测试的时候, 打印对象的信息。
new : 创建并返回一个实例对象, 调用一次,就会得到一个对象
class :获取已知对象的类(对象.class)
del : 对象在程序运行结束后进行对象销毁的时候调用, 来释放资源。

class Person:
    name, age, sex = '', '', ''

    def __init__(self, name, age, sex):
        """
        实例属性的声明
        :param name:
        :param age:
        :param sex:
        """
        self.name = name
        self.age = age
        self.sex = sex
        pass

    def __str__(self):
        """
        打印对象 自定义对象 是内容格式的
        :return:
        """
        return '{name:%s,age:%d,sex:%s}' % (self.name, self.age, self.sex)
        pass

    def __new__(cls, *args, **kwargs):
        """
        创建对象实例的方法 每调用一次就会生产一个新对象 cls 就是class的缩写

        创建: 可以控制创建对象的一些属性限定, 经常用来做单例模式来使用
        :param args:
        :param kwargs:
        """
        print('new 函数的执行')
        return object.__new__(cls)  # 在这里是真正创建对象实例的
        pass

    def eat(self):
        print('%s在吃饭' % self.name)
        pass

    def walk(self):
        print(self.name + '在走路')
        pass

    def __del__(self):
        print('del 函数的执行')
        pass

    pass

# __new__ 和 __init__ 函数的区别
# new 类的实例化方法, 必须要返回该实例, 否则对象就创建不成功 , 至少有一个参数就是cls代表要实例化的类, 此参数在实例化是由解释器提高
# init 用来做数据属性的初始化工作, 也可以认为实例的构造方法

xm = Person('张三', 20, '男')
xm.eat()
print(xm.name)  # 添加实例化属性

lisi = Person('lisi', 18, '男')
print(lisi.name)
lisi.walk()
print(lisi)

标签: python基础