python 面向对象 __dict__

打印 类或对象中的所有成员

类的构造函数属性 属于对象;类中的公有属性和方法等属于类

打印信息

class schoolMember(object):
    ‘‘‘学校成员分类‘‘‘
    member = 0

    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

        self.enroll()  # 实例化时候 自动注册

    def enroll(self):
        ‘‘‘注册‘‘‘
        print("just enrolled a new school member [%s]" % self.name)
        schoolMember.member += 1

    def tell(self):
        print("-------%s info-------" % self.name)

    def __del__(self):  # 析构函数
        print("开除了 [%s]" % self.name)
        schoolMember.member -= 1

class Teather(schoolMember):
    ‘‘‘教师类‘‘‘

    def __init__(self, name, age, sex, salary, course):
        schoolMember.__init__(self, name, age, sex)
        self.salary = salary
        self.course = course

    def teaching(self):
        print("tearcher [%s] is teaching [%s]" % (self.name, self.course))

    def tell(self):
        print(‘‘‘
        ----------info:%s----------
        name:%s
        age:%s
        salary:%s
        ‘‘‘ % (self.name,self.name,self.age,self.salary))

class Student(schoolMember):
    ‘‘‘学生类‘‘‘

    def __init__(self, name, age, sex, course, tuition):
        schoolMember.__init__(self, name, age, sex)
        self.course = course
        self.tuition = tuition
        self.amount = 0

    def pay_tuition(self, amount):
        print("student [%s] has just paied [%s]" % (self.name, amount))
        self.amount += amount

t1 = Teather("mike", 28, "F*M", 10000, "python")
s1 = Student("jianlin", 21, "N/A","pythons15", 100000)
s2 = Student("mayun", 12, "M", "pythons15", 210000)

print(schoolMember.member)

print("-"*40)
t1.tell()

print("-"*40)
del s1
print(schoolMember.member)
del s2
print(schoolMember.member)
del t1
print(schoolMember.member)

‘‘‘
just enrolled a new school member [mike]
just enrolled a new school member [jianlin]
just enrolled a new school member [mayun]
3
----------------------------------------

        ----------info:mike----------
        name:mike
        age:28
        salary:10000

----------------------------------------
开除了 [jianlin]
2
开除了 [mayun]
1
开除了 [mike]
0
‘‘‘

用__dict__  以字典方式打印所有属性

class schoolMember(object):
    ‘‘‘学校成员分类‘‘‘
    member = 0

    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

        self.enroll()  # 实例化时候 自动注册

    def enroll(self):
        ‘‘‘注册‘‘‘
        print("just enrolled a new school member [%s]" % self.name)
        schoolMember.member += 1

    def tell(self):
        print("-------%s info-------" % self.name)

    def __del__(self):  # 析构函数
        print("开除了 [%s]" % self.name)
        schoolMember.member -= 1

class Teather(schoolMember):
    ‘‘‘教师类‘‘‘

    def __init__(self, name, age, sex, salary, course):
        schoolMember.__init__(self, name, age, sex)
        self.salary = salary
        self.course = course

    def teaching(self):
        print("tearcher [%s] is teaching [%s]" % (self.name, self.course))

class Student(schoolMember):
    ‘‘‘学生类‘‘‘

    def __init__(self, name, age, sex, course, tuition):
        schoolMember.__init__(self, name, age, sex)
        self.course = course
        self.tuition = tuition
        self.amount = 0

    def pay_tuition(self, amount):
        print("student [%s] has just paied [%s]" % (self.name, amount))
        self.amount += amount

t1 = Teather("mike", 28, "F*M", 10000, "python")
s1 = Student("jianlin", 21, "N/A","pythons15", 100000)
s2 = Student("mayun", 12, "M", "pythons15", 210000)

print(schoolMember.member)

print("-"*40)

print(t1.__dict__)   # # 以字典方式打印所有属性

print("-"*40)
del s1
print(schoolMember.member)
del s2
print(schoolMember.member)
del t1
print(schoolMember.member)

‘‘‘
just enrolled a new school member [mike]
just enrolled a new school member [jianlin]
just enrolled a new school member [mayun]
3
----------------------------------------
{‘name‘: ‘mike‘, ‘age‘: 28, ‘sex‘: ‘F*M‘, ‘salary‘: 10000, ‘course‘: ‘python‘}
----------------------------------------
开除了 [jianlin]
2
开除了 [mayun]
1
开除了 [mike]
0
‘‘‘
class schoolMember(object):
    ‘‘‘学校成员分类‘‘‘
    member = 0

    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

        self.enroll()  # 实例化时候 自动注册

    def enroll(self):
        ‘‘‘注册‘‘‘
        print("just enrolled a new school member [%s]" % self.name)
        schoolMember.member += 1

    def tell(self):
        print("%s info".center(40, "-") % self.name)

        for i in self.__dict__:  # 循环字典   t1.__dict__
            print("\t", i, self.__dict__[i])

        print("End".center(40, "-")+"\n")

    def __del__(self):  # 析构函数
        print("开除了 [%s]" % self.name)
        schoolMember.member -= 1

class Teather(schoolMember):
    ‘‘‘教师类‘‘‘

    def __init__(self, name, age, sex, salary, course):
        schoolMember.__init__(self, name, age, sex)
        self.salary = salary
        self.course = course

    def teaching(self):
        print("tearcher [%s] is teaching [%s]" % (self.name, self.course))

class Student(schoolMember):
    ‘‘‘学生类‘‘‘

    def __init__(self, name, age, sex, course, tuition):
        schoolMember.__init__(self, name, age, sex)
        self.course = course
        self.tuition = tuition
        self.amount = 0

    def pay_tuition(self, amount):
        print("student [%s] has just paied [%s]" % (self.name, amount))
        self.amount += amount

t1 = Teather("mike", 28, "F*M", 10000, "python")
s1 = Student("jianlin", 21, "N/A","pythons15", 100000)
s2 = Student("mayun", 12, "M", "pythons15", 210000)

print(schoolMember.member)

t1.tell()
s1.tell()
s2.tell()

del s1
print(schoolMember.member)
del s2
print(schoolMember.member)
del t1
print(schoolMember.member)

‘‘‘
just enrolled a new school member [mike]
just enrolled a new school member [jianlin]
just enrolled a new school member [mayun]
3
----------------mike info-----------------
     name mike
     age 28
     sex F*M
     salary 10000
     course python
------------------End-------------------

----------------jianlin info-----------------
     name jianlin
     age 21
     sex N/A
     course pythons15
     tuition 100000
     amount 0
------------------End-------------------

----------------mayun info-----------------
     name mayun
     age 12
     sex M
     course pythons15
     tuition 210000
     amount 0
------------------End-------------------

开除了 [jianlin]
2
开除了 [mayun]
1
开除了 [mike]
0
‘‘‘
以字典形式打印这个类所有属性,方法
获取类的成员,即:公有属性、方法等
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "minger"
# Date: 2018/2/27

class dog(object):

    def __init__(self,name):
        self.name = name

    def eat(self):
        print("%s is eating %s" % (self.name,‘ss‘))

    def talk(self):
        print("%s is taking" % self.name)

print(dog.__dict__) # 以字典形式打印这个类所有属性,方法

# {‘__module__‘: ‘__main__‘, ‘__init__‘: <function dog.__init__ at 0x000000000283F7B8>, ‘eat‘: <function dog.eat at 0x000000000283F840>, ‘talk‘: <function dog.talk at 0x000000000283F8C8>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘dog‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘dog‘ objects>, ‘__doc__‘: None}
只打印实例变量属性,不包括类属性
class dog(object):

    def __init__(self,name):
        self.name = name

    def eat(self):
        print("%s is eating %s" % (self.name,‘ss‘))

    def talk(self):
        print("%s is taking" % self.name)

# print(dog.__dict__) # 以字典形式打印这个类所有属性,方法
d = dog("mike")
print(d.__dict__)   # 只打印实例变量属性,不包括类属性

# {‘name‘: ‘mike‘}

原文地址:https://www.cnblogs.com/mingerlcm/p/8442468.html

时间: 2024-10-17 00:12:43

python 面向对象 __dict__的相关文章

Python 面向对象class(2)

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定

Python面向对象(2)

1.除了封装,Python面向对象还有继承这一功能,如下代码,这是简单的继承功能. class Animal: def chi(self): print(self.name+' 吃') def he(self): print(self.name + ' 喝') class Cat: def __init__(self, name): self.name = name def jiao(self): print('瞄') class Dog(Animal):#继承Animal这个父类,拥有父类的方

python 面向对象(进阶篇)

上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

Python面向对象-day07

写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心是过程,过程就是解决问题的步骤:流水线.机械式: 优点:复杂的问题简单化,分成多个功能单元: 缺点:可扩展性差 应用:Linux内核.httpd.git - 2.面向对象 核心是对象: 要理解对象,应该把自己当做上帝,在上帝眼里一切存在的事物都是对象,不存在的也可以创建出来: 对象是 特征(变量)和

Python 面向对象-------补充

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定

Python面向对象(5)

Python面向对象里面有很多特殊方法,例如__init__(构造方法),__del__(析构方法),这些方法对于面向对象编程非常重要,下面列出一些常用的特殊方法 (1)__call__ class Foo: def __init__(self): self.name = 'name' def __call__(self, *args, **kwargs): print('call') return 1 r = Foo() a=r()#实例后面加括号,执行类里面的__call__方法,也可以Fo

Python面向对象之类的成员

Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段.方法和属性,我们将这三大块统称为类的成员. 一.字段 字段可以分为静态字段.动态字段,下面通过代码展示类中的两种字段 class MyClass:     # 静态字段,属于类,多个对象共用一个静态字段     leader = "abuve"       def __init__(self):         # 动态字段,属于对象,也可以叫普通的字段

python面向对象进阶(八)

上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

Python 面向对象的补充

isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 1 class Foo(object): 2 pass 3 4 class Bar(Foo): 5 pass 6