在Python中,类一般是由语句 class xxx: 定义。
比如一段最简单的:
class Dog:
def __init__(self, name):
# 用双下划线包围的是python类中的魔术方法,一般都有特殊作用
# 比如init就是初始化类时解释器自动调用的一个方法(在__new__之后)
self.name = name #这里创建了一个Dog类的属性name,其值就是由init传入的name
def who_am_i(self): # 在类中直接用一个缩进+def关键字就可以定义类的方法,实例化后可以直接使用
print(self.name)
color = "white" # 类中也可以直接创建变量
定义时在类名后可以加上小括号(),里面填写创建的类所继承的超类,就可以在创建的类中调用超累的相关方法和属性。
比如说:
class A(list): # 继承list类
def __init__(self, item):
super(A, self).__init__(item) # 用super方法调用list类的init方法,以创建一个列表(就是self参数)
def switch(self):
self.insert(0, self.pop()) # 这里由于继承了list类,可以直接调用它的方法(insert和pop)来对self(列表)进行操作
这段代码中,创建的类A继承了list类,所以可以直接调用其方法。
至于题主提到的str和list,其实它们就是两个内置类,平时我们调用的方法,比如list().append(), str().split(),都是在它们的类体中定义的方法,所谓的转换只是将传入的参数实例化后赋值到变量上。比如说:
a = list((3, 4, 5))
这里是将(3, 4, 5)这个元组但做参数传到list类的__init__方法中,然后再实例化。如果我们看官方list类的__init__方法就可以发现这点
class list(object):
def __init__(self, seq=()): # known special case of list.__init__
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
# (copied from class doc)
"""
pass
由于内设的类好像大部分都是由C编写的,建议直接到官网上看一看list和str类的文档,会对它们的理解有所帮助。https://docs.python.org/3/docs.python.org
萌新第一次回答问题,希望能帮得上忙~