object专栏 03.类与对象 01.属性

"""
面向过程:
    将程序流程化

面向对象:
    对象就是容器,用来存放数据与功能

类:
    用来产生对象的模型,类就是数据类型
    类名:推荐驼峰命名法
    类在定义阶段就产生了名称空间

"""


class Student:
    school = '方舟教育'
    # 该代码在运行时会执行
    print('from Student')

    def func01(self):
        print('from stu_func01')
        return self


print(Student.__dict__)
# 类的属性,底层为一个字典
# {
#   '__module__': '__main__', 'school': '方舟教育',
#   'func01': <function Student.func01 at 0x103481430>,
#   ...
# }

print(Student.school, Student.__dict__['school'])
class Student:
    stu_school = 'beautiful'

    # 自动触发该函数
    # 自动传入self
    def __init__(self, x):
        self.stu_name = x
        # 该方法必须返回None 默认即可

    # 自动将对象传入函数
    # 如果函数并不操作对象,则不需要把函数定义在类内部
    def stu_func01(self):
        print('from stu_func01')
        return self


# 底层传入一个空对象,返回一个有数据的对象
stu_obj_01 = Student('黎明')
rse_01 = stu_obj_01.__dict__
# {'stu_name': '黎明'}
class School:
    school_name = '艺术学院'

    # 独有数据 创建对象时自动调用
    def __init__(self, address):
        self.address = address
        # 创建班级空列表
        self.classes = []

    # 共享方法:关联班级 设置班级名
    def related_class(self, class_obj):
        # 将班级名加入列表
        self.classes.append(class_obj.name)


class Class:
    def __init__(self, name):
        self.name = name


class_01 = Class('2103')
class_02 = Class('2104')
student = School('净月区')
# 关联学校与班级对象
student.related_class(class_01)
student.related_class(class_02)
# 获取班级的属性
print(student.classes)
"""
绑定方法:将调用者本身当做第一个参数传入
    绑定给对象的方法:调用者为对象,自动传入一个对象  默认
    绑定给类的方法:调用者为类,自动传入一个类       @classmethod

非绑定方法[静态方法]:既不指定给类又不指定给对象      @staticmethod

"""


class Mysql:
    def __init__(self, name):
        self.name = name

    # 绑定给类的方法
    @classmethod
    # 创建对象 传入类
    def mk_obj(cls):
        print(cls)
        # <class '__main__.Mysql'>
        print('对象被创建了')
        # 主要用于初始化对象
        return cls('初始名')


obj = Mysql('gg')
print(obj.name)

obj = obj.mk_obj()
print(obj.name)


class People:
    @staticmethod
    def say():
        print('非绑定函数')


# 调用者可以是类或对象
# 不会自动传参
People.say()
people = People()
people.say()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值