zoukankan      html  css  js  c++  java
  • 初識面向對象

    类属性与对象属性

    创建对象 也称之为实例化   产生的对象也称之为实例

    class Person:
        color = "black"
    
        def eat(self):
            print("黑人哥们正在吃饭....")
    p1 = Person()
    print(p1)
    print(p1.color)
    print(p1.__dict__)
    
    p2 = Person()
    print(p2)
    print(p2.color)
    print(p2.__dict__)
    
    #
    print(id(p1.color))
    print(id(p2.color))
    print(id(Person.color))

    当修改某一个对象的属性时 不会影响其他对象和类

    p2.color = "yellow"
    print(p2.color)
    print(p1.color)
    print(Person.color)
    
    Person.color = "red"
    print(p1.color)
    print(p2.color

    init方法的作用

    init 是初始化的缩写 用于为对象的属性设置初始值

    执行时机:当实例化产生对象时会自动执行该函数
        会自动传入需要初始化的对象
        初始化必须包含至少一个参数 用于表示对象本身
        该函数不允许有返回值

    class Dog:
                def __init__(self,age,name,**kwargs):
                    print("init run")
                    print(self)
                    self.age = age
    d = Dog(5,'agr')
    print(Dog.__init__)
    print(d)
    print(d.age)          self.name = name    

    绑定方法

    当使用类调用时,就是一个普通函数 有几个参数就得传几个参数

    当用对象来调用时,是一个绑定方法了,会自动将对象作为第一个参数传入

    一个类中可以有属性和方法

    方法分为两种

    1.绑定方法

    1.1对象绑定方法

    在使用对象调用时会自动传入对象本身

    class People:
        def __init__(self,name,age):
            self.name = name
            self.age = age
        def talk(self):
            pass
        
    p = People('xiaohua',18)
    print(p.talk)

    1.2类绑定方法

    @classmethod

    在使用对象调用时会自动传入类本身

    在使用类来调用时也会自动传入类本身

    单例模式中就会经常使用@classmethod

    lass People:
        @classmethod
        def talk(cls):
            pass
    
    p = People()
    print(People.talk)

    2.非绑定方法

    即不需要对象中的数据 也不需要类中的数据  那就定义为非绑定方法,就是普通函数

    @staticmethod

    import hashlib
    import time
    class MySQL:
        def __init__(self,host,port):
            self.id=self.create_id()
            self.host=host
            self.port=port
        @staticmethod
        def create_id(): #就是一个普通工具
            m=hashlib.md5(str(time.clock()).encode('utf-8'))
            return m.hexdigest()
    
    
    print(MySQL.create_id) #<function MySQL.create_id at 0x0000000001E6B9D8> #查看结果为普通函数
    conn=MySQL('127.0.0.1',3306)
    print(conn.create_id) #<function MySQL.create_id at 0x00000000026FB9D8> #查看结果为普通函数

     

     

     

     

     

  • 相关阅读:
    之三:CAAnimationGroup
    之二:CAKeyframeAnimation
    Core Animation
    swift基础语法(28- 继承与构造方法, 指定构造与便利构造方法)
    swift基础语法(26-继承,super关键字,override关键字,final关键字)
    swift基础语法(25- 下标subscripts)
    swift基础语法(24-方法,self关键字,mutating方法,类方法)
    swift基础语法(23- 属性,存储属性,延迟存储属性,计算属性,属性观察器,类属性)
    swift基础语法(22-类,类的恒等运算)
    swift基础语法(21-结构体,结构体构造器,定义成员方法)
  • 原文地址:https://www.cnblogs.com/duGD/p/10878716.html
Copyright © 2011-2022 走看看