zoukankan      html  css  js  c++  java
  • Python-面向对象编程

    #类         一类东西,一个模型
    #实例 #通过这个模型造出来的东西
    #对象 #实例
    #实例化 #就是造实例的过程

    class Cat(object): #新式类书写方式
        def __init__(self,name): #__init__ 构造函数,类里面可以有,也可以没有,构造函数时实例化的时候就会执行的函数
            self.name = name
        def cry(self):
            print('%s在哭泣'%self.name)
    
    xiaohei = Cat('Jaryy') #实例化一个对象
    xiaohei.cry()  #实例化后调用类里面的方法(函数),类里面的方法调用才会运行,不调用不会运行

    #面向的对象的特性
    #封装
    #就是把零散代码封装成一个函数,或者封装成一个类
    #继承
    #就是父类有的东西,你也有。
    class JxFather(object):
        addr = '密云'
        def __init__(self,num):
            self.house_num = num
        def makeMoney(self):
            print('xx')
            print('sdfjksdjfklsdjfsdfsdf23423sdfs,秘密6')
    
    class Jx(JxFather):#继承了JxFather这个类
        def __init__(self):
            self.name = 'wjx'
            print('jx')
        def dabaojian(self):
            print('拔出大宝剑')
    class JxSon(Jx):
        print('jjjj')
    
    
    
    wdb = JxSon()#父类和父类的父类中的东西,wdb这个实例中全都有
    wdb.makeMoney()

    #方法 就是类里面有什么功能,其实就是类里面的函数
    #构造函数
    初始化这个对象,你想让他给你传哪些东西
    他会在这个类实例化的时候自动执行。
    #析构函数
    它是在这个实例被销毁的时候自动执行的。
    #类里面的函数如果有多次调用,而且还要获取到他的返回值,那就用return
    如果这个变量就用了一次,那么就用self

    #类变量,类属性,是一个意思
    存在类里面的,一般一些公共的东西,不会变的,用类变量
    class My(object):
        country = 'Janpan'  #类变量
        __salt = '&2342bkjh234234'
        def __init__(self):
            self.__cup = '乐扣' #私有变量,变量前面加上两个下划线,类外部不可以调用,只能在类内部使用
            print('cup is %s'%self.__cup)
            # self.__my_money()
        def bad(self):
            # print('【%s】坏掉了'%self.__cup)
            # self.__cup = '款泉水瓶'
            print('又换了个杯子是%s'%self.__cup)

    #实例变量
    实例化的时候才创建的变量。
    class My(object):
        addr='changping'
        def __init__(self,name):
            self.name=name
        def cup(self):
            self.bz='cupper'
    
    gl=My('gaili')
    gl.cup()
    print(gl.bz)# bz 这个变量,只有对象实例化后且调用gl.cup()后才存在,如果不调用gl.cup()这个函数,bz这个变量就是不存在的

    #类方法
    通过类名可以直接调用,不需要实例化,可以访问类属性,不可以访问实例属性
    class My(object):
        country = 'Janpan'
    
        @classmethod
        def ddl(cls):#类方法,通过类名可以直接调用
            print(cls.country)
    
    
    My.ddl()#不需要实例化,类名可以直接调用
      #静态方法
    就是写在类里面的一个普通函数而已。
    class Person:
        grade = 1
    def sayHi(self):  # 加self区别于普通函数
            print("Hello, your name is?")
    
        @staticmethod  # 声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量
        def sayName():  # 使用了静态方法,则不能再使用self
            print("my name is king")   
    
    Person.sayName() #可以通过类名直接调用 # 运行结果:my name is king

    #实例方法
    必须实例化之后才可以调用的方法
    类里面的函数,如果第一个参数是self,那么就是一个实例方法

    #属性方法
    把一个方法变成一个变量
    属性方法也是一个实例方法,需要实例化才能使用。
    属性方法同样可以通过实例方法实现
    如果你使用属性方法的话,那么必须得有返回值,而且不能有入参。
    class Calc(object):
        def __init__(self,a,b):
            self.a = a
            self.b = b
        def add(self):
            return self.a+self.b
        @property  #通过这个关键字变成一个类属性
        def add2(self):
            return self.a+self.b
    c=Calc(1,2)
    print(c.add2)#实例化后直接调用,后面不用加()

    运行结果:3

    #私有
    私有属性、变量
    私有方法、函数
    方法或者变量,在前面加上__,(两个下划线),它就是一个私有方法/私有变量
    私有方法或者变量在类里面随便用,出了类就不好使,类外部调用私有变量或者方法,就会报错,

    “my.__my_money()
    AttributeError: 'My' object has no attribute '__my_money'”



  • 相关阅读:
    MySQL主从数据库同步延迟问题解决(转)
    Python2.6升级Python2.7
    Socket网络编程
    Python 面向对象进阶
    Python类基础知识(面向对象基础)
    shell脚本中出现^M
    Centos6下Python3的编译安装
    Python成长之路(常用模块学习)
    SVN使用总结
    xshell锁屏
  • 原文地址:https://www.cnblogs.com/niuniu2018/p/8342307.html
Copyright © 2011-2022 走看看