diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py
--- a/pydantic/dataclasses.py
+++ b/pydantic/dataclasses.py
@@ -288,7 +288,10 @@ def handle_extra_init(self: 'Dataclass', *args: Any, **kwargs: Any) -> None:
             init(self, *args, **kwargs)
 
     if hasattr(dc_cls, '__post_init__'):
-        post_init = dc_cls.__post_init__
+        try:
+            post_init = dc_cls.__post_init__.__wrapped__  # type: ignore[attr-defined]
+        except AttributeError:
+            post_init = dc_cls.__post_init__
 
         @wraps(post_init)
         def new_post_init(self: 'Dataclass', *args: Any, **kwargs: Any) -> None:

See #4484.

@PrettyWood, any ideas?
I'll check
diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py
--- a/tests/test_dataclasses.py
+++ b/tests/test_dataclasses.py
@@ -1474,6 +1474,31 @@ def __post_init__(self):
     assert C().a == 6  # 1 * 3 + 3
 
 
+def test_inheritance_post_init_2():
+    post_init_calls = 0
+    post_init_post_parse_calls = 0
+
+    @pydantic.dataclasses.dataclass
+    class BaseClass:
+        def __post_init__(self):
+            nonlocal post_init_calls
+            post_init_calls += 1
+
+    @pydantic.dataclasses.dataclass
+    class AbstractClass(BaseClass):
+        pass
+
+    @pydantic.dataclasses.dataclass
+    class ConcreteClass(AbstractClass):
+        def __post_init_post_parse__(self):
+            nonlocal post_init_post_parse_calls
+            post_init_post_parse_calls += 1
+
+    ConcreteClass()
+    assert post_init_calls == 1
+    assert post_init_post_parse_calls == 1
+
+
 def test_dataclass_setattr():
     class Foo:
         bar: str = 'cat'

Dataclass post_init_post_parse called multiple times.
### Initial Checks

- [X] I have searched GitHub for a duplicate issue and I'm sure this is something new
- [X] I have searched Google & StackOverflow for a solution and couldn't find anything
- [X] I have read and followed [the docs](https://pydantic-docs.helpmanual.io) and still think this is a bug
- [X] I am confident that the issue is with pydantic  (not my code, or another library in the ecosystem like [FastAPI](https://fastapi.tiangolo.com) or [mypy](https://mypy.readthedocs.io/en/stable))


### Description

When using inheritance with `pydantic.dataclasses.dataclass` based objects with `pydantic>=1.10` I seem to have encountered a bug that calls `__post_init_post_parse__` methods multiple times if a `__post_init__` method is called further down an inheritance chain.

Running the below code snippet outputs the print statement three times, whereas if `__post_init__` is placed in `AbstractClass` the `"post init post parse called"` statement is called twice.

The exact same code snippet on `pydantic<1.10` works as expected with the print statement only printed the once.

Including an overridden `__post_init__` method in `ConcreteClass` only prints the statement once - but of course if there is more useful logic contained in `BaseClass.__post_init__` (as would be the case for this pattern) then this is ignored.

Removing the `@dataclass` decorators from the base classes works fine however, except **if** we didn't have access to the code for those underlying base classes.

EDIT: It appears its due to these lines:
https://github.com/pydantic/pydantic/blob/v1.10.2/pydantic/dataclasses.py#L290-L304

### Example Code

```Python
from pydantic.dataclasses import dataclass

@dataclass
class BaseClass:
    def __post_init__(self):
        pass

@dataclass
class AbstractClass(BaseClass):
    pass

@dataclass
class ConcreteClass(AbstractClass):
    def __post_init_post_parse__(self):
        print("post init post parse called")

ConcreteClass()

# prints:
# post init post parse called
# post init post parse called
# post init post parse called


# Example of nested dataclasses from docs: https://pydantic-docs.helpmanual.io/usage/dataclasses/#convert-stdlib-dataclasses-into-pydantic-dataclasses

from datetime import datetime
from typing import Optional

@dataclass
class Meta:
    modified_date: Optional[datetime]
    seen_count: int
    def __post_init__(self):
        print("POST INIT")

@dataclass
class File(Meta):
    filename: str
    def __post_init_post_parse__(self):
        print("POST INIT POST PARSE")

File(filename="file.txt", modified_date=datetime.now(), seen_count=1)

# prints:
# POST INIT
# POST INIT POST PARSE
# POST INIT POST PARSE
```


### Python, Pydantic & OS Version

```Text
pydantic version: 1.10.2
            pydantic compiled: True
                 install path: *****
               python version: 3.8.13 (default, Mar 28 2022, 06:16:26)  [Clang 12.0.0 ]
                     platform: macOS-10.16-x86_64-i386-64bit
     optional deps. installed: ['dotenv', 'typing-extensions']
```


### Affected Components

- [X] [Compatibility between releases](https://pydantic-docs.helpmanual.io/changelog/)
- [X] [Data validation/parsing](https://pydantic-docs.helpmanual.io/usage/models/#basic-model-usage)
- [ ] [Data serialization](https://pydantic-docs.helpmanual.io/usage/exporting_models/) - `.dict()` and `.json()`
- [ ] [JSON Schema](https://pydantic-docs.helpmanual.io/usage/schema/)
- [X] [Dataclasses](https://pydantic-docs.helpmanual.io/usage/dataclasses/)
- [ ] [Model Config](https://pydantic-docs.helpmanual.io/usage/model_config/)
- [ ] [Field Types](https://pydantic-docs.helpmanual.io/usage/types/) - adding or changing a particular data type
- [ ] [Function validation decorator](https://pydantic-docs.helpmanual.io/usage/validation_decorator/)
- [ ] [Generic Models](https://pydantic-docs.helpmanual.io/usage/models/#generic-models)
- [ ] [Other Model behaviour](https://pydantic-docs.helpmanual.io/usage/models/) - `construct()`, pickling, private attributes, ORM mode
- [ ] [Settings Management](https://pydantic-docs.helpmanual.io/usage/settings/)
- [ ] [Plugins](https://pydantic-docs.helpmanual.io/) and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.

tests/test_dataclasses.py::test_inheritance_post_init_2
tests/test_dataclasses.py::test_simple tests/test_dataclasses.py::test_model_name tests/test_dataclasses.py::test_value_error tests/test_dataclasses.py::test_frozen tests/test_dataclasses.py::test_validate_assignment tests/test_dataclasses.py::test_validate_assignment_error tests/test_dataclasses.py::test_not_validate_assignment tests/test_dataclasses.py::test_validate_assignment_value_change tests/test_dataclasses.py::test_validate_assignment_extra tests/test_dataclasses.py::test_post_init tests/test_dataclasses.py::test_post_init_validation tests/test_dataclasses.py::test_post_init_inheritance_chain tests/test_dataclasses.py::test_post_init_post_parse tests/test_dataclasses.py::test_post_init_post_parse_types tests/test_dataclasses.py::test_post_init_assignment tests/test_dataclasses.py::test_inheritance tests/test_dataclasses.py::test_validate_long_string_error tests/test_dataclasses.py::test_validate_assigment_long_string_error tests/test_dataclasses.py::test_no_validate_assigment_long_string_error tests/test_dataclasses.py::test_nested_dataclass tests/test_dataclasses.py::test_arbitrary_types_allowed tests/test_dataclasses.py::test_nested_dataclass_model tests/test_dataclasses.py::test_fields tests/test_dataclasses.py::test_default_factory_field tests/test_dataclasses.py::test_default_factory_singleton_field tests/test_dataclasses.py::test_schema tests/test_dataclasses.py::test_nested_schema tests/test_dataclasses.py::test_initvar tests/test_dataclasses.py::test_derived_field_from_initvar tests/test_dataclasses.py::test_initvars_post_init tests/test_dataclasses.py::test_initvars_post_init_post_parse tests/test_dataclasses.py::test_post_init_post_parse_without_initvars tests/test_dataclasses.py::test_classvar tests/test_dataclasses.py::test_frozenset_field tests/test_dataclasses.py::test_inheritance_post_init tests/test_dataclasses.py::test_hashable_required tests/test_dataclasses.py::test_hashable_optional[1] tests/test_dataclasses.py::test_hashable_optional[None] tests/test_dataclasses.py::test_hashable_optional[default2] tests/test_dataclasses.py::test_override_builtin_dataclass tests/test_dataclasses.py::test_override_builtin_dataclass_2 tests/test_dataclasses.py::test_override_builtin_dataclass_nested tests/test_dataclasses.py::test_override_builtin_dataclass_nested_schema tests/test_dataclasses.py::test_inherit_builtin_dataclass tests/test_dataclasses.py::test_dataclass_arbitrary tests/test_dataclasses.py::test_forward_stdlib_dataclass_params tests/test_dataclasses.py::test_pydantic_callable_field tests/test_dataclasses.py::test_pickle_overriden_builtin_dataclass tests/test_dataclasses.py::test_config_field_info_create_model tests/test_dataclasses.py::test_issue_2162[foo0-bar0] tests/test_dataclasses.py::test_issue_2162[foo1-bar1] tests/test_dataclasses.py::test_issue_2162[foo2-bar2] tests/test_dataclasses.py::test_issue_2162[foo3-bar3] tests/test_dataclasses.py::test_issue_2383 tests/test_dataclasses.py::test_issue_2398 tests/test_dataclasses.py::test_issue_2424 tests/test_dataclasses.py::test_issue_2541 tests/test_dataclasses.py::test_issue_2555 tests/test_dataclasses.py::test_issue_2594 tests/test_dataclasses.py::test_schema_description_unset tests/test_dataclasses.py::test_schema_description_set tests/test_dataclasses.py::test_issue_3011 tests/test_dataclasses.py::test_issue_3162 tests/test_dataclasses.py::test_discriminated_union_basemodel_instance_value tests/test_dataclasses.py::test_post_init_after_validation tests/test_dataclasses.py::test_keeps_custom_properties tests/test_dataclasses.py::test_ignore_extra tests/test_dataclasses.py::test_ignore_extra_subclass tests/test_dataclasses.py::test_allow_extra tests/test_dataclasses.py::test_allow_extra_subclass tests/test_dataclasses.py::test_forbid_extra tests/test_dataclasses.py::test_post_init_allow_extra tests/test_dataclasses.py::test_self_reference_dataclass tests/test_dataclasses.py::test_extra_forbid_list_no_error tests/test_dataclasses.py::test_extra_forbid_list_error tests/test_dataclasses.py::test_parent_post_init tests/test_dataclasses.py::test_subclass_post_init_post_parse tests/test_dataclasses.py::test_subclass_post_init tests/test_dataclasses.py::test_subclass_post_init_inheritance tests/test_dataclasses.py::test_dataclass_setattr