您的位置:首页 > 编程语言 > Python开发

从零开始学Python

2015-08-04 11:02 465 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Keifor/article/details/84735925

第六章:类和对象

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)  如果A是B的子类返回True,否则返回False

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

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

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

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

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

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

4.接口

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

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

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

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

 例如:

>>setattr(tc,’name’,’zq’)

>>tc.name

输出:zq 

 

<!--EndFragment--> 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: