0. 对Python中类的理解

对Python中类的理解

1. 类和对象

  • 我们学过很多编程语言,其中有面向过程的,如函数式编程和C语言,也有面向对象的,如Jav,Python,C++,接下来就简单谈谈对类和对象的理解
  • 类:就是事物的抽象,如:汽车模型
  • 对象:类的一个实例,如:QQ轿车,大客车等等

2. 类的定义(Python)

  • class是定义类的一个关键字,而且注意类名首字母要大写
  • 要创建的类型不能用简单的类型表示时就需要创建类
  • 类把变量和函数组合在一起,这也就是称之为封装,在类中变量和函数分别称之为属性和方法
  • 面向对象有三大特征:封装、继承。多态,这里只说它的封装
  • class 类名(成员变量+成员函数)
class Text:
    first=123
    second=456
    def f(self):
        print("text")
milo=Text  # milo是Text的一个实例化对象
print(milo.f)
print(milo.first)

3. 对象的创建

  • 创建对象的过程称之为实例化,当一个对象被创建之后,包含三个特性:对象的句柄、属性和方法
  • 如 milo=Text # milo是Text的一个实例化对象

4. 类属性

类属性三大特点:
1 类属性从属于类;
2. 访问类属性,可以通过类名来访问,也可以通过对象来访问;
3. 修改或删除类属性只能通过类名来修改或者删除。

具体看一段代码

"——————类属性————————"
class User(object):
    name="张三"  #公共的类属性
    __passward = '123456'  #私有(隐藏)的类属性
    def __init__(self,sex,username):
        self.sex = sex
        self.name = username
class QQ_User(User):  #继承父类User
    pass
###类的属性
u=User("男","globin")  #类的实例化
print(u.name)  #对象属性和类属性名字一样时,如果你通过对象来访问则会返回对象方法的属性,如globin
print(User.name) #如果你通过类来访问,则返回类的属性而不是对象方法的属性,和下面子类的原理也是一样的
print(QQ_User.name) #name从父类继承过来的,name属于类属性,可以通过类来访问,也可以通过类的对象来访问
###类属性的修改
u.name="王五"
print(u.name)#输出“王五”,本质上没有修改类的属性,只是给该对象定义了一个对象属性name,赋值为“王五”
print(User.name)  #本质上通过对象是不能修改类属性的
User.name="赵四"  #通过类来修改类属性是可以的
print(User.name)
###类属性的删除
del u.name  #本质上只是删除了对象的name属性,而没有删除类的属性,通过对象和类访问类属性都是没有发生改变的
print(u.name)
print(User.name)

5. 类方法

  • 类方法是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以’cls’作为第一个参数的名字,就最好用’cls了),能够通过实例对象和类对象去访间。
"——————类方法——————"
class A(object) :
    name="张三"
    def test1 (self):
        print("A的test1方法")
    @Classmethod
    del test2 (cls): #类方法一定要在该方法的上面加一个修饰器(java中是注解),类方法的参数是cls,代表当前的类
        cls.name="王五"
        print("A的test2方法")
a=A()
a.test2()
A.test2()
print(A.name)

小结

  • 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值