从零开始学Python

第六章:类和对象

1.创建类

  class Person:

def setName(self,name):

   self.name=name

def getName(self):

   Return self.name

def greet(self):

   print(hello,self.name)

创建对象:

>>foo=Person()

>>bar=Person()

>>foo.setName(zq)

>>foo.greet()

输出:hello,zq

>>bar.name=zq2

>>bar.greet()

输出:hello,zq2

>>jkl=bar.greet

>>jkl()

输出:hello,zq2 #因为绑定的是bar的对象,因此还是相当于调用bar对象的方法

可以看出,self实际上是把对象本身传入方法中去了,这就是绑定方法和函数的区别,方法中有self,函数中则没有

2.私有化

  class Sec:

def __ina(self):

 print(you can not see)

def acc(self):

 print(message is:,self.__ina())

>>s=Sec()

>>此时输出s__ina会报错

>>输出s.acc()才能正确输出

特别地:在类的内部的变量,可以被所有实例访问

3.超类

  class Filter:

     def pre():

      print(hello)

  class MF(Filter):

     def pre():

      print(hello2)

 MF就是Filter的一个子类,如果检查一个类是否是另一类的子类用内建的函数:

          issubclass(A,B)  如果AB的子类返回True,否则返回False

 如果想知道已知类的基类则用下面的函数:

          MF.__bases__   输出所有基类的信息

检查一个对象是否为一个类的实例:

     isinstance(对象,类名)   返回True或者False

如果使用__metaclass__=type或从object继承的方式定义类的时候,可以用type(对象名)查看实例的类

多重继承的情况要慎用,假如继承了AB两个类,如果AB的方法中有名称一样的那么A会重写B的方法,将B的方法覆盖。

4.接口

  getattr(对象名,类中的方法或者函数,None)

  可以返回类中的方法是否可以调用

  setattr(对象名,对象的属性,)

  将类中的对象的属性,通过对象名设置为某一个值。

 例如:

>>setattr(tc,name,zq)

>>tc.name

输出:zq 

 

<!--EndFragment--> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值