Python3中定义类的时候加括号和不加括号有区别吗?

Python3中定义类的时候加括号和不加括号有区别吗?

在Python中定义类class的时候,可以加上():

#!/usr/bin/env python3
class Persion():
    def __init__(self,name):
        self.name = name
        print(self)
        print(type(self))
        print(self.__class__)

### 实例化
tt = Persion("aa")

也可以不加上():

#!/usr/bin/env python3
class Persion:
    def __init__(self,name):
        self.name = name
        print(self)
        print(type(self))
        print(self.__class__)

### 实例化
tt = Persion("aa")

我们还可以加 object

#!/usr/bin/env python3
class Persion(object):
    def __init__(self,name):
        self.name = name
        print(self)
        print(type(self))
        print(this.__class__)

### 实例化
tt = Persion("aa")


object 又是什么?

object是python的默认类,他有很多的方法,比如list,str,dict等等都是继承了object类的方法。

继承了object的类属于新式类 ,没有继承属于经典类
python2 中有新式类和经典类的说法,因为在python2中有不继承object类的所以有经典类

而在Python3中只有新式类的说法,也就是说有类都是继承了object类的

在python3种默认都是新式类,也即是所有的自定义类,基类都会继承object类。

换一句说就是 在python3.x的所有类都是object的子类。所以对于一些内置的方法会写在object类中。如果子类不定义,在调用的时候最终会调用object类中的方法。就不会让程序出现不必要的错误了。

比如我们常见的构造方法(__init__),就属于内置方法。

总结:

事实上是在功能上没有区别的,以下三种写法在功能上是等价的:

class A:
    pass
    
class A():
    pass
    
class A(object):
    pass

  • 35
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Python和C++定义和使用有很多不同之处,下面是具体的例子: 1. 定义Python定义使用`class`关键字,例如: ``` class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name, "and I am", self.age, "years old.") ``` 而在C++定义需要包含名、访问修饰符、成员变量和成员函数等信息,例如: ``` class Person { public: Person(string name, int age); void say_hello(); private: string name; int age; }; Person::Person(string name, int age) { this->name = name; this->age = age; } void Person::say_hello() { cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl; } ``` 可以看到,Python定义比较简单,只需要使用`class`关键字和成员函数即可,而C++的定义需要包含访问修饰符、成员变量和成员函数等信息。 2. 对象的创建 在Python,对象的创建使用括号的方式,例如: ``` p = Person("Tom", 20) p.say_hello() ``` 而在C++,对象的创建需要使用`new`关键字来分配内存空间,并使用`->`运算符来调用成员函数,例如: ``` Person* p = new Person("Tom", 20); p->say_hello(); delete p; ``` 可以看到,Python的对象创建比较简单,只需要使用名和括号即可,而C++的对象创建需要手动分配和释放内存空间。 3. 构造函数和析构函数 在Python,构造函数使用`__init__`方法来实现,例如: ``` class Person: def __init__(self, name, age): self.name = name self.age = age ``` 而析构函数使用`__del__`方法来实现,例如: ``` class Person: def __del__(self): print("Person object is destroyed") ``` 而在C++,构造函数和析构函数分别使用名和`~`符号来实现,例如: ``` class Person { public: Person(string name, int age); ~Person(); private: string name; int age; }; Person::Person(string name, int age) { this->name = name; this->age = age; } Person::~Person() { cout << "Person object is destroyed" << endl; } ``` 可以看到,Python的构造函数和析构函数使用的是特殊的方法名,而C++的构造函数和析构函数使用的是名和`~`符号。 总之,Python和C++在定义和使用上有很多不同之处,需要根据具体的需求来选择适合的编程语言
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叱咤少帅(少帅)

如果文章对你有帮助就打赏下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值