重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
往列表里添加多个值可以用 extend():
创新互联建站专注于企业网络营销推广、网站重做改版、宜川网站定制设计、自适应品牌网站建设、成都h5网站建设、购物商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为宜川等各大城市提供网站开发制作服务。
class User():
def __init__(self, first_name, last_name):
self.first = first_name
self.last = last_name
def titl(self):
list = []
# list.append(self.first_name)
# list.append(self.last_name)
list.extend([self.first, self.last])
print(list)
me = User('ssx', 'xing')
print(me.first + ', ' + me.last)
me.titl()
首先指出你的问题:拼写错误
建立class ElectricCar(Car) 子类的时候
初始化 属性时 def __int__改为__init__ 少打了一个 i
造成Python 识别不到属性battery_size
改过来看一下
~~我也被绕进去好久~~~
代码看起来没有问题。如果在python3上不能用,应该也只需要小小的调整。原则上应该跑得通。
不过话说回来,这样的技巧通常在python里用不上。因为python的强大并不是因为它的面向对象属性。
而且这些写代码的可读性也较差。 python的强大在于它通用,它与C的良好结合,最重要的是它是“脚本”。 可以动态的做任何事情,既然它的动态很强大,你就不需要写这样的代码。
直接这样
s1= AnyClass()
s1.any_variable = some_value
这样足够了。因为python可以自动给未知的变量,增加一个内部属性。所以我经常写下面的这样的代码
class Config:
pass
conf = Config()
conf.mysql_ip = "127.0.0.1"
这样就可以了
处理属性的重要属性和函数
1、特殊属性
__class__:对象所属类的引用(即obj.__class__和type(obj)的作用相同)。Python中的某些特殊方法比如 __getattr__,只在对象的类中寻找,而不在实例中寻找。__dict__:一个映射,存储对象或类的可写属性。__slots__:类可以定义这个属性,限制实例有哪些属性。
2、内置函数
dir([object]):列出对象的大多数属性。getattr(object,name[,default]):从object对象中获取name字符串对应的属性。获取的属性可能来自对象所属的类或超类。hasattr(object,name):若object对象中存在指定的属性,或者能以某种方式(如继承)通过object对象获取指定的属性,返回True。setattr(object,name,value):把object对象指定属性的值设为value,前提是object对象能接受那个值。这个函数可能会创建一个新属性,或者覆盖现有的属性。var([object]):返回object对象的__dict__属性。
相关推荐:《Python视频教程》
3、特殊方法
__delattr__(self,name):只要使用del语句删除属性,就会调用这个方法。__dir__(self):把对象传给dir函数时调用,列出属性。__getattr__(self,name):仅当获取指定的属性失败,搜索过obj,Class和超类之后调用。__getattribute__(self,name):尝试获取指定的属性时总会调用这个方法。不过寻找的属性是特殊属性或特殊方法时除外。为了防止无限递归,__getattribute__方法的实现要使用super().__getattribute__(obj,name)。__setattr__(self,name,value):尝试设置指定的属性时总会调用这个方法。点号和setattr内置函数会触发这个方法。
相关推荐:
Python中的属性和特性是什么