python 面向对象 __dict__
Posted minger_lcm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\'}
以上是关于python 面向对象 __dict__的主要内容,如果未能解决你的问题,请参考以下文章