Python学习8

前言

# 编程语言  面向过程  and  面向对象
# 面向过程 -----> 分析问题,解决问题的步骤
# 面向对象 -----> 抽象,姑且称为解决问题的方法
# 面向对象的两个基本概念 ----> 类和对象
# 类:
#    ----> 具有相同属性和方法的对象的集合,定义集合中对象所共有的属性和方法 , 对象是类的实例
# 对象:
#    ----> 类的实例
# 三大特性: 继承、多态、封装
# 继承: 子类继承父类的字段和方法  ---->  狗来自动物,
# 多态: 不同类型的变量进行相同的操作,根据类(对象)的不同表现出不同的行为
# 封装: 抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性
#       和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员

类的理解

简单粗暴  类 == 变量+函数 (类中叫属性和方法)

class my_A():

    # 变量 (类中叫属性)
    val1 = "济南"
    val2 = "青岛"
    val3 = "烟台"

    # 函数 (类中叫方法)
    def fun1(self):
        print("我是济南")

    def fun2(self):
        print("我是青岛")

    def fun3(self):
        print("我是烟台")

# 创建对象
myA = my_A()
# 调用方法 类.方法名
myA.fun3()
# 调用方法 类.属性名
print(myA.val3)

类方法调用类属性,方法的调用 不使用classmethod声明func1是类方法,则报错

注意,这里是直接调用类方法,没有实例化

# 直接使用类
# 类方法调用类属性 classmethod

class my_A():

    val1 = "济南"

    @classmethod
    def fun1(cls):
        print("我是济南", cls.val1)
        # print("dwshi:"+str(age))



my_A.func1()
# MY = my_A()
# MY.fun1(23)

修改类属性,方法内部修改

class Myclass:

    val = "济南"

    # @classmethod
    def func(self, ):
        print("我是:", self.val)
        self.val = input("请输入修改后的值")
        print("我是:", self.val)
        self.val1 = input("加入新的值")
        print("我是新的值:", self.val1)

a = Myclass()
a.func()

结果

我是: 济南
请输入修改后的值 烟台
我是:  烟台
加入新的值青岛
我是新的值: 青岛

类和实例的属性修改关系

类属性发生变化,调用类属性的实例属性发生改变

修改实例属性,类的属性不会发生改变 

注意修改的是类的属性,还是实例的属性

# 类和实例

class Myclass:

    val = "山东"

    def func(self):
        print("方法调用", self.val)


# 实例化
my_class = Myclass()
# 调用类的方法
my_class.func()
# 查看类的属性
print(my_class.val)
# 修改类的属性, 调用类属性的实例属性发生改变,
# 修改实例属性, 但是类的属性不发生改变
Myclass.val = "济南"
my_class.func()
my_class.val = "青岛"
print(Myclass.val)

结果

方法调用 山东
山东
方法调用 济南
济南
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值