zoukankan      html  css  js  c++  java
  • [python 学习] 类

    #!/usr/bin/python
    # -*- encoding:utf-8 -*-
    class Animal:
        animal_num = 0
    
    class Dog(Animal):
        #类帮助文档
        'this is help'
        #两个下划线开头,类的私有属性,不能在类外部访问,类内部使用self.__dog_name访问
        __Dog_name = 'dahuang'
        dog_num = 0
        #累的构造函数,初始化实例时调用
        def __init__(self, name, color):
            self.color = color
            self.name = name
            Dog.dog_num += 1 #类变量在内部类中调用
    
        #self代表类的实例,类内部的函数必须包含且第一个参数为 self
        def prt(self):
            print self
            print self.__class__
            
        #self不是python关键字,可以使用其他代替
        def prt_2(self_2):
            print self_2
            print self_2.__class__
    
        def printDogName(self):
            print self.name
        
        #__private_method类的私有方法,调用self.__private_method
        def __get_Dog_name(self):
            return self.__Dog_name
    
        def get_Dog_name(self):
            return self.__get_Dog_name()
    
        #输出对象实例时调用(print)
        #或使用str(obj)调用
        def __str__(self):
            return 'print 时调用'
        
        #repr(obj)
        def __repr__(self):
            return '直接输出对象,使用print打印时调用,或repr(obj)'
    
        # 析构方法
        def __del__(self):
            print '对象被删除'
    
    #实例化
    d = Dog('jack','red')
    
    #同 print d
    str(d)
    #同 print d
    repr(d)
    #调用析构方法
    # del d
    
    d.prt()
    d.prt_2()
    
    print d.get_Dog_name() #dahuang
    
    #_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
    
    #通过 object._className_attrName访问累的私有变量
    print d._Dog__Dog_name #dahuang
    #放问类的私有方法同上
    print d._Dog__get_Dog_name() #dahuang 
    
    #添加属性
    d.age = 10
    #修改属性
    d.age = 12
    # del删除属性
    del d.color
    
    #使用函数操作属性
    hasattr(d,'age')      #如果存在 ‘age’ 属性返回 true 
    getattr(d, 'age')     #返回 ‘age’ 属性的值
    setattr(d, 'age', 13) #添加属性 ‘age 的值为13
    delattr(d, 'age')     #删除属性 'age'
    
    #内置类属性
    #__dict__:类的属性
    #{'__module__': '__main__', 'printDogName': <function printDogName at 0x02B3B9B0>, 
    # 'prt_2': <function prt_2 at 0x02B3B970>, 'prt': <function prt at 0x02B3B8F0>,
    # 'dog_num': 1, '__doc__': 'this is help', '__init__': <function __init__ at 0x02B3B9F0>}
    print Dog.__dict__ 
    
    #__name__:类名
    #Dog
    print Dog.__name__
    
    #__module__:类定义所在的模块
    #__main__
    print Dog.__module__
    
    #__bases__:类的所有父类构成的元素
    #(<class __main__.Animal at 0x038AABC8>,)
    print Dog.__bases__
    
    #打印类说明
    print Dog.__doc__
  • 相关阅读:
    一对多
    订单数据模型分析
    一对一查询(2)
    一对一查询
    Statement、PreparedStatemnt、CallableStatement
    getParameter和getAttribute的区别
    SQL基础试题
    Java 泛型(Generics) 综述
    <html>
    oracle视图建主键
  • 原文地址:https://www.cnblogs.com/natian-ws/p/7783408.html
Copyright © 2011-2022 走看看