面向对象--类和对象

一类和对象

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。

       类具有属性,是对象状态的抽象;类具有操作,是对象行为的抽象;类是模子,定义的对象拥有共同的特征和行为,即属性和方法。类是对象的类型,对象是类的实例。  

      对象是一个能看得到,摸的着的具象实体。

1 类的定义

语法:   

class 类名:

    类成员(包括属性和方法)

      这里的属性 官方语言叫做 类变量,属于这个类的公用部分,谁都可以来用,所以通常不作为实例变量使用,就是一个符号。而方法,则是在类中定义的函数,可以理解为类的行为部分。  
       实例化:通过类创建出一个对象,叫做实例化一个类。这里创建出的对象,官方语言是:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。、 

举例:

# 类的构造方法和初始化方法
class Person:
    def test(self):
        print("这是test方法")
#self指当前对象
    def seyhello(self):
        print("姓名:",self.name)
#生成一个tom对象
tom=Person()#默认调用了类中的构造方法和初始化方法
tom.test()
tom.name="Tom"
#Python可以单独给对象写属性java不可以,是对象属性,不具有通用性

tom.seyhello()

输出结果:

这是test方法
姓名: Tom

        这个代码定义了类Person的实例对象tom,然后调用tom的test()方法,显示打印内容。

self参数
        代表实例参数本身,即当前类的实例对象,self作为类方法定义的第一个参数是隐含参数,调用方法是不需要传入实参。当要访问类实例对象的属性时,可以使用self.属性访问。
构造方法

        __init__(self,属性名):    

        创建新对象时,系统会自动调用构造方法,传入新创建的对象,可以为对象的属性赋予初始值。

class Person():

pCount=0

    def __init__(self,name,sex,age):
        self.name = name
        self.sex = sex

        self.age = age

        Person.pCount+=1
    def hello(self):
        print("姓名:{0},性别:{1},年龄:{2}".format(self.name,self.sex,self.age))
#初始化方法
zhangsan=Person("张三","男",20)
zhangsan.hello()
zhangsan.name='lisi'
zhangsan.hello()

#self指当前对象

输出结果:

姓名:张三,性别:男,年龄:20

姓名:lisi,性别:男,年龄:20      

2 类属性和实例属性

        属性分为:类属性和实例属性。

        类属性是与类绑定的,不依赖于对象,又称静态属性。不需要实例化对象,类和对象都可以访问获取其值。如:pCount,在任何地方想要访问,都可以使用Person.pCount访问。tom是Person的实例对象,可以使用tom.pCount访问。

        实例属性存在于对象中,需要先创建对象,再访问获取其值,且每一个不同的对象都有属于自己的实例属性值。前例中,name,sex,age是实例属性。

        python允许在任何时候添加,修改,或删除类和对象的属性,使用赋值运算符可以为类对象添加,修改。

        eg:Person.pCount=2  是对类属性进行修改。tom.pCount也会改变。

                tom.pCount=1      是赋值操作, Person.pCount不会改变。

        使用del语句可以删除类对象的属性,语法:

        del 类名.属性名       

3 方法  

类中定义方法有3中:类方法,实例方法,静态方法              

类方法: 

语法: #与类绑定,不依赖于对象

@classmethod 

类方法名(cls,参数列表)

        方法代码

@classmethod 表示下面的方法是类方法  将类本身作为对象进行操作的方法  

            注意 :必须至少有一个参数 cls 来代替 self  其余自定义  ,cls表示当前类,调用时不需要传入参数

                       类方法中,只能使用类属性,不能使用实例属性。

实例方法

        与类绑定,且依赖于对象。再类中声明定义,需创建对象,在调用执行。

静态方法

        静态方法与类方法区别:在某些应用场合需要cls参数时,只能使用类方法,不需要时,两者是通用的。

 语法:

@staticmethod 

类方法名()

        方法代码

举例:

class Test:
    def test(self):
        print('test....')
    @classmethod
    def classMethod(cls):

        print('cls类')

    @staticmethod 

    def staticMethod():

        print('静态')


Test.classmethod()   #类成员
t=Test()
t.test()             #对象成员

 输出结果:

cls类
test....        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值