-
doc 描述类的信息
class Foo(object):
# 单引号和双引号都可以
“”“这里描述类的信息”""def func(self): pass
print(Foo.doc) #>>>这里描述类的信息
-
call 对象后面加括号,触发执行
__call__方法的执行是由对象加括号触发的,即:对象()或者 类()()
class Foo(object):
def call(self, *args, **kwargs):
print(“running call”, args, kwargs)foo = Foo()
foo(1, 2, 3, name = “UserPython”) #>>>running call (1, 2, 3) {‘name’: ‘UserPython’}Foo()(1, 2, 3, name = “UserPython”) #>>>running call (1, 2, 3) {‘name’: ‘UserPython’}
-
dict 查看类或对象中的所有成员
class Foo(object):
def init(self, name, age):
self.name = name
self.age = agefoo = Foo(“UserPython”, 17)
print(Foo.dict) #打印类里的所有属性,不包括实例属性
print(foo.dict) #打印所有实例属性,不包括类属性 -
str 如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值
class Foo(object):
def init(self, name, age):
self.name = name
self.age = agedef __str__(self): return "<obj:%s>" % self.name
foo = Foo(“UserPython”, 17)
print(foo) #>>><obj:UserPython>
-
getitem 、 setitem 、delitem 用于索引操作,如字典。分别表示获取、设置、删除数据
class Foo(object):
def __getitem__(self, key): print("__getitem__", key) def __setitem__(self, key, value): print("__setitem__", key, value) def __delitem__(self, key): print("__delitem__", key)
foo = Foo()
foo[“name”] = “UserPython” #>>>setitem name UserPython 触发__setitem__
foo[“name”] #>>>getitem name 触发__getitem__
del foo[“name”] #>>>delitem name 触发__delitem__ -
new 、metaclass
class Foo(object):
def __init__(self, name): self.name = name
foo = Foo(“UserPython”)
‘’’
上述代码中,foo是通过Foo类实例化的对象,其实,不仅foo是一个对象,Foo类本身也是一个对象,因为在Python中一切事物都是对象。
如果按照一切事物都是对象的理论:foo对象时通过执行Foo类的构造方法创建,那么Foo类对象应该也是通过执行某个类的构造方法创建。
‘’’print(type(foo)) #>>><class ‘main.Foo’> 表示foo对象是由Foo类创建
print(type(Foo)) #>>><class ‘type’> 表示Foo类对象是由type类创建所以,foo对象是Foo类的一个实例,Foo类对象时type类的一个实例,即:Foo类对象是通过type类的构造方法创建。那么,创建类就可以有两种方式了
普通方式
class Foo(object):
def func(self):
print(“hello UserPython”)特殊方式
def func(self):
print(“hello %s” % self.name)def init(self, name, age): #构造方法
self.name = name
self.age = age创建了一个type类,然后用type类实例化了一个Foo类,由于Foo本身是一个类,所以Foo又实例化了一个对象foo
Foo = type(‘Foo’, (object, ), {“func” : func,
“init” : init})foo = Foo(“UserPython”, 19)
foo.func()
print(type(Foo))
原文:https://blog.csdn.net/UserPython/article/details/79946795?utm_source=copy