`
onlynima
  • 浏览: 5302 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

从零开始学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--> 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics