python面向对象2

1.属性方法

  看起来像属性(变量)的一个方法

class Baby():  #定义一个类

  @property      #装饰器,表示hhh()是一个属性方法,可以被调用

  def hhh(self):  #定义一个方法

    return 999

bb=Baby()  #实例化

print(bb.hhh)  #调用属性方法,属性方法可以用装饰器@property标记

2.类变量

  在类里面定义的变量。

class Baby():

  country='China'  #类变量,公共的变量,每个实例都可以用的

  def cry(self):

    print('哇哇哇')

aa=Baby()  #实例化

print(aa.country)  #实例化后,调用类变量

ps:类变量可以通过类名.xx来修改,例如:

Baby.country='Japan'

3.类方法

class Baby():

  country='China'  

  def cry(self):

    print('哇哇哇')

  @classmethod   #装饰器

  def xm(cls):   #xm()类方法,cls代表的就是Baby

    print(cls.country)

    print('我是类方法')

结论:

  1.不实例化就可以直接用类名调用xm方法:

  print(Baby.xm())

  2.实例化之后,在通过实例化之后的对象调用xm方法:

  aa=Baby()  #实例化

  print(aa.xm())

  3.它通过cls实用类变量

  4.它不能调用这个类里面的其他实例方法和实例变量

4.实例变量(成员变量)

  

5.实例方法

  和self有关的,必须实例化之后才能调用的方法,所有的方法都需要实例化再调用

class Baby():

  country='China'  

  def cry(self):  #实例方法

    print(‘哇哇哇’)

6.静态方法

@staticmethod   #是静态方法,它和一个没写在类里面的函数一样

def xh():

  print('这个是静态方法,它和一个没写在类里面的函数一样') #它用不了类变量,类方法,实例变量,实例方法,和普通方法一样

7.私有(私有方法/私有变量)

  在变量或方法前加两个下划线,比如:__port

  私有变量和私有方法,只能在类里使用,出了类就不能使用

class My(object):  #定义类
def __init__(self):
self.__host = '118.24.3.40' #私有变量
self.__port = 6379 #私有变量
    self.__password = 'HK139bc&*' #私有变量
        self.r = redis.Redis(host=self.__host,port=self.__port,password=self.__password)
def get(self,k):
res = self.r.get(k)
if res:
return res.decode()
return None
def __close(self): #私有方法
print('close')
原文地址:https://www.cnblogs.com/fancyl/p/9073366.html