python入门之类和对象

1、类

1.1、类简单理解为是对多组功能(方法)的封装。为了区分全局函数,一般在pthon中定义在类中的函数叫做方法。

1.2、面向对象的三大特性:继承、封装和多态

 

2、创建类

2.1、创建类使用class关键字

2.2、类中定义的方法第一个参数必须为self,在调用方法是此参数无需传,默认为调用此方法的对象。

2.3、方法的调用有两种形式:第一种是使用对象直接调用,第二种是使用类调用

例如:class Person:

                  def setName(self,name):

                        self.name = name

                  def  greet(self,age):

                         print("greet")

         p = Person()

         p.setName("hello")

         print(p.name)

         Person.greet(p)

 

3、方法私有化

1、在python中方法私有化是通过在方法前加入双下划线(__)实现的。

2、方法私有化的本质是在方法前加入了(_类名),所以私有方法也是可以直接访问的,访问方式:_类名__方法名。

例如:class Person:

               def  __setName(self,name):

                      self.name = name

          p = Person()

          p.__setName("xx")   #报错

          p._Person__setName("xx")

          p.print(p.name)

4、类中可以动态添加方法和属性

4.1、动态添加属性和方法使用setattr函数。

4.2、判断某类中是否包含某个属性或方法使用hasattr或getattr函数判断。

例如:

class Person:
    def __setName(self, name):
        self.name = name
p = Person()
p.age = 10
print(p.age)
setattr(p, "clazz", '甲')
def setScore(score):
    p.score = score
setattr(p, "setScore", setScore)
p.setScore(63)
print(p.score)
print(p.clazz)

5、继承

5.1、python支持多继承,继承的类以逗号隔开。

5.2、多继承中如果存在相同的方法名,前面继承的方法会覆盖后继承的方法。

5.3、在python中不存在方法重载这种说法,所有后面定义了和前面相同的方法名,会覆盖前面定义的方法,也就是前面定义的方法是不可以调用的。

5.4、判断两个对象是否存在继承关系,可以使用issubclass函数。

例如:class Person1:

                  def setName(self,name):

                          self.name = name

          class Person2:

                  def setAge(self,age):

                         self.age = age

          class Student(Person1,Person2):

                  def setScore(self,score):

                         self.score = score

         s = Student()

         s.setName("小明")

         print(s.name)

         print(issubclass(Student,Person1))

 

 

 

                       

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值